戻る
Android備忘録(ファイル操作とシェル)

Android備忘録
ファイルの読み込みとシェルの操作

(1)シェルの操作
Androidエミュレーターのシェルのはコマンドプロンプトで
adb shell
で起動する
adbはAndroidSDKがインストールされえているフォルダーのplatform-toolsの中にある。
私の環境の場合は
c:\android-sdk-windows\platform-tools\adb shell
での起動となる。
勿論
cd \android-sdk-windows\platform-tools
adb shell
でもOKだ。
Program FilesにSDKをインストールした場合は
c:\Program files\android-sdk-windows\platform-tools\adb shell
の起動となる。

コンソールを起動する
cd c:\android-sdk-windows\platform-tools
チェンジディレクトリでadbのあるフォルダーまで入る
c:\android-sdk-windows\platform-tools>adb shell
Shellを起動する。#なのでスーパーユーザーだ。
# cat /data/data/filewrite.syakazuka.com/files/test.txt
cat /data/data/filewrite.syakazuka.com/files/test.txt
this is file write test.
today it's very cold,and snow fall.
上記のようにコマンドを打つと
下のように打ったコマンドが表示され、実行される
# cat /data/data/filewrite.syakazuka.com/files/test.txt
cat /data/data/filewrite.syakazuka.com/files/test.txt
this is file write test.
today it's very cold,and snow fall.#
# mkdir /data/data/fileread.syakazuka.com/files/
mkdir /data/data/fileread.syakazuka.com/files/
# echo "this is test for file read." > /data/data/fileread.syakazuka.com/files/test.txt
echo "this is test for file read." > /data/data/fileread.syakazuka.com/files/test.txt
# ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev

今回はデータの入出力の操作実験のため、
/data/data/fileread.syakazuka.com/files/test.txt
に、Shellを利用してデータを書き込んでみた。
書き込んだデータをシェルで読んでみると以下のようになる
# ls -l >> /data/data/fileread.syakazuka.com/files/test.txt
ls -l >> /data/data/fileread.syakazuka.com/files/test.txt
# cat /data/data/fileread.syakazuka.com/files/test.txt
cat /data/data/fileread.syakazuka.com/files/test.txt
this is test for file read.
drwxrwxrwt root     root              2011-03-04 01:45 sqlite_stmt_journals
drwxrwx--- system   cache             2011-01-18 00:35 cache
d--------- system   system            2011-03-04 01:45 sdcard
lrwxrwxrwx root     root              2011-03-04 01:45 etc -> /system/etc
drwxr-xr-x root     root              2009-11-24 23:17 system
drwxr-xr-x root     root              1970-01-01 00:00 sys
drwxr-x--- root     root              1970-01-01 00:00 sbin
dr-xr-xr-x root     root              1970-01-01 00:00 proc
-rwxr-x--- root     root        10700 1970-01-01 00:00 init.rc
-rwxr-x--- root     root         1677 1970-01-01 00:00 init.goldfish.rc
-rwxr-x--- root     root       106696 1970-01-01 00:00 init
-rw-r--r-- root     root          118 1970-01-01 00:00 default.prop
drwxrwx--x system   system            2011-01-18 00:35 data
drwx------ root     root              2009-08-07 03:35 root
drwxr-xr-x root     root              2011-03-04 01:46 dev


#


(2)ファイルを読み込むプログラム
書き込んだデータを読み込むプログラムを作成し、実行した画面が以下のとおりである。


main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
>
<TableRow>
<TextView android:text="ファイル名"/>
<EditText android:id="@+id/filename"/>
</TableRow>
</TableLayout>
<Button android:id="@+id/read"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="読み込む"
/>
<TextView android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>

FileReadActivity.java
package fileread.syakazuka.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.Button;
import android.widget.TextView;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class FileReadActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);final Button forward = (Button) findViewById(R.id.read);
        forward.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                readFile();
            }
        });
    }
    private void readFile() {
        final EditText filename = (EditText) findViewById(R.id.filename);
        StringBuffer sb = new StringBuffer();
        try {
            FileInputStream fis =
            openFileInput(filename.getText().toString());
            InputStreamReader isw = new InputStreamReader(fis);
            BufferedReader br = new BufferedReader(isw);
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line);
                sb.append(System.getProperty("line.separator"));
            }
            br.close();
        } catch (IOException e) {
            sb.append(e.toString());
        }
        final TextView result = (TextView) findViewById(R.id.result);
        result.setText(sb.toString());
    }
}