Android演習

6.ファイルとデータベース
6-1 ファイルの入出力
2つの方法
①内部記憶装置にファイルを保存する。
②外部記憶装置(SDカード)にファイルを保存
1. 内部記憶装置の入出力
関連クラス
android.app.Activityクラス
FileInputStream openFileInput(String path) 入力ストリームをオープンする
FileOutputStream openFileOutput
出力ストリームをオープンする。
(String path, int mode)
プログラム例(その1)
package jp.eclipse;
import java.io.*;
import android.app.*;
import android.content.*;
import android.os.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
public class InnerFileActivity extends Activity
{
Button [] button = new Button[2];
EditText etext;
プログラム例(その2)
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout LL=new LinearLayout(this);
LL.setOrientation(LinearLayout.VERTICAL);
setContentView(LL);
for(int i=0;i<button.length;i++)
button[i]=new Button(this);
button[0].setText("読込み");
button[1].setText("書込み");
etext=new EditText(this);
etext.setLines(3);
LL.addView(etext);
プログラム例(その3)
for(int i=0;i<button.length;i++)
{ LL.addView(button[i]);
button[i].setOnClickListener(new FileClickListener());
}
}
class FileClickListener implements OnClickListener
{
public void onClick(View v)
{ if(v == button[0])
{
try
{ FileInputStream finS=
openFileInput("Test.txt");
BufferedReader breader =
new BufferedReader(new
InputStreamReader(finS));
StringBuffer sbuff=new StringBuffer();
プログラム例(その4)
String str;
while((str=breader.readLine())!=null)
sbuff.append(str);
etext.setText(sbuff);
}
catch(Exception e){}
}
else
{ try
{ FileOutputStream foutS=
openFileOutput("Test.txt",
Context.MODE_WORLD_READABLE);
プログラム例(その5)
BufferedWriter bwriter =
new BufferedWriter(new OutputStreamWriter(foutS));
bwriter.write(etext.getText().toString());
bwriter.flush();
foutS.close();
}
catch(Exception e){}
}
}
}
}
プログラム例(その5)
テキストウィジェットに入力して
「書込み」ボタンをクリック
テキストウィジェットを変更して
「読込み」ボタンをクリック すると
元にもどることを確認
2. 外部記憶装置の入出力
①AndroidManifest.xmlにパーミッションを指定する。
…
</application>
<user-permission android:name=
android.permission.WRITE_EXTERNAL_STRAGE” />
</manifest>
②プログラム上で,外部記憶上のディレクトリを取得し,扱うファイルを
作成
File dir = new File(Environment.getExternalStrageDirectory(),
“DataSample”);
if(dir.exists()==false) dir.mkdir();
f=new File(dir,”sample.dta”);
3. ファイル一覧
(Java.io パッケージのlist()メソッドで下位のディレクリのファイル一覧を取り出す)
package jp.eclipse;
import java.io.*;
import java.io.File;
import android.app.*;
import android.os.*;
import android.widget.*;
public class FiledirActivity extends Activity {
ListView lview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout LL =new LinearLayout(this);
LL.setOrientation(LinearLayout.HORIZONTAL);
setContentView(LL);
lview=new ListView(this);
File f=new File("data/data/"+getPackageName());
String[] str =f.list();
ArrayAdapter<String> A= new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1,str);
lview.setAdapter(A);
LL.addView(lview);
}
}
ファイル一覧実行例