package net.npaka.fileex;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
//ファイルの読み書き
public class FileEx extends Activity
implements View.OnClickListener {
public final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT;
public final static int FP=LinearLayout.LayoutParams.FILL_PARENT;
private EditText editText;
//ボタンの生成
private Button makeButton(String text,String tag) {
Button button=new Button(this);
button.setText(text);
button.setTag(tag);
button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC));
button.setOnClickListener(this);
return button;
}
//アプリの初期化
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//レイアウトの生成
LinearLayout layout=new LinearLayout(this);
layout.setBackgroundColor(Color.rgb(255,255,255));
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
//エディットテキストの生成
editText=new EditText(this);
editText.setText("",EditText.BufferType.NORMAL);
editText.setLayoutParams(new LinearLayout.LayoutParams(FP,WC));
layout.addView(editText);
//ボタンの生成
layout.addView(makeButton("書き込み","write"));
layout.addView(makeButton("読み込み","read"));
}
//ボタンクリック時に呼ばれる
public void onClick(View v) {
String tag=(String)v.getTag();
//ファイルへの書き込み
if (tag.equals("write")) {
try {
String path=this.getFilesDir()+"/test.txt";
String str=editText.getText().toString();
data2file(str.getBytes(),path);
} catch (Exception e) {
showDialog(this,"エラー","書き込み失敗しました ");
}
}
//ファイルからの読み込み
else if (tag.equals("read")) {
try {
String path=this.getFilesDir()+"/test.txt";
String str=new String(file2data(path));
editText.setText(str,TextView.BufferType.EDITABLE);
} catch (Exception e) {
showDialog(this,"エラー","読み込み失敗しました ");
}
}
}
//バイトデータ→ファイル
private void data2file(byte[] w,String fileName)
throws Exception {
FileOutputStream fos=null;
try {
fos=new FileOutputStream(fileName);
fos.write(w);
fos.close();
} catch (Exception e) {
if (fos!=null) fos.close();
throw e;
}
}
//ファイル→バイトデータ
private byte[] file2data(String fileName)
throws Exception {
int size;
byte[] w=new byte[1024];
FileInputStream fin=null;
ByteArrayOutputStream out=null;
try {
fin=new FileInputStream(fileName);
out=new ByteArrayOutputStream();
while (true) {
size=fin.read(w);
if (size<=0) break;
out.write(w,0,size);
}
fin.close();
out.close();
return out.toByteArray();
} catch (Exception e) {
try {
if (fin!=null) fin.close();
if (out!=null) out.close();
} catch (Exception e2) {
}
throw e;
}
}
//ダイアログの表示
private static void showDialog(final Activity activity,String title,String text) {
AlertDialog.Builder ad=new AlertDialog.Builder(activity);
ad.setTitle(title);
ad.setMessage(text);
ad.setPositiveButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int whichButton) {
activity.setResult(Activity.RESULT_OK);
}
});
ad.create();
ad.show();
}
}
|