http://blog.csdn.net/aomandeshangxiao/article/details/6589510
1.創建一個Android工程
- Project name:File
- BuildTarget:Android2.2
- Application name:文件讀寫
- Package name:test.file
- Create Activity:DateActivity
- Min SDK Version:8
strings.xml文件內容:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="app_name">數據保存</string>
- <string name="file_name">文件名</string>
- <string name="file_content">文件內容</string>
- <string name="button_file_save">保存</string>
- <string name="button_file_read">讀取</string>
- <string name="file_save_success">保存文件成功</string>
- <string name="file_save_failed">保存文件失敗</string>
- <string name="file_read_failed">讀取文件失敗</string>
- </resources>
- <?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">
- <!-- 文件名 -->
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="@string/file_name" />
- <EditText android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:id="@+id/et_file_name" />
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="@string/file_content" />
- <EditText android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:minLines="3"
- android:id="@+id/et_file_content" />
- <RelativeLayout android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- <Button android:layout_width="wrap_content"
- android:layout_height="wrap_content" android:text="@string/button_file_save"
- android:id="@+id/bt_save" />
- <Button android:layout_width="wrap_content"
- android:layout_height="wrap_content" android:layout_toRightOf="@id/bt_save"
- android:text="@string/button_file_read" android:id="@+id/bt_read"
- android:layout_alignTop="@id/bt_save"
- />
- </RelativeLayout>
- </LinearLayout>
首先我們向工程中添加一個FileService.java:其實就是用的java裏面的文件操作。
- package test.service;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import android.content.Context;
- import android.os.Environment;
- public class FileService {
- private Context context;
- public FileService(Context context) {
- this.context = context;
- }
- public void saveToSDCard(String filename, String content) throws Exception{
- if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
- File file = new File(Environment.getExternalStorageDirectory(), filename);
- FileOutputStream outStream = new FileOutputStream(file);
- outStream.write(content.getBytes());
- outStream.close();
- }
- }
- public void save(String filename, String content) throws Exception{
- FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_PRIVATE);
- outStream.write(content.getBytes());
- outStream.close();
- }
然後再向工程中添加FileButtonOnClickEvent.java:
- package test.event;
- import test.file.R;
- import test.service.FileService;
- import android.app.Activity;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- public class FileButtonOnClickEvent implements OnClickListener {
- private Activity activity;
- // 通過FileService讀寫文件
- private FileService fileService;
- // 打印信息用的標籤
- private static final String TAG = "FileButtonOnClickEvent";
- public FileButtonOnClickEvent(Activity activity) {
- this.activity = activity;
- this.fileService = new FileService(activity);
- }
- public void onClick(View v) {
- Button button = (Button) v;
- switch (button.getId()) {
- case R.id.bt_save:
- // 獲取文件名
- EditText etFileNameS = (EditText) this.activity
- .findViewById(R.id.et_file_name);
- String fileNameS = etFileNameS.getText().toString();
- // 獲取文件內容
- EditText etFileConS = (EditText) this.activity
- .findViewById(R.id.et_file_content);
- String fileContentS = etFileConS.getText().toString();
- // 保存
- try {
- this.fileService.save(fileNameS, fileContentS);
- // 在窗口中顯示一個特效信息框
- Toast.makeText(this.activity, R.string.file_save_success,
- Toast.LENGTH_LONG).show();
- Log.i(TAG, "save file success!");
- } catch (Exception e) {
- Toast.makeText(this.activity, R.string.file_save_failed,
- Toast.LENGTH_LONG).show();
- Log.e(TAG, e.toString());
- }
- break;
- case R.id.bt_read:
- // 獲取文件名
- EditText etFileNameR = (EditText) this.activity
- .findViewById(R.id.et_file_name);
- String fileNameR = etFileNameR.getText().toString();
- // 讀取文件
- try {
- String fielContentR = this.fileService.readFile(fileNameR);
- EditText etFileConR = (EditText) this.activity
- .findViewById(R.id.et_file_content);
- etFileConR.setText(fielContentR);
- Log.i(TAG, "read file success!");
- } catch (Exception e) {
- Toast.makeText(this.activity, R.string.file_read_failed,
- Toast.LENGTH_LONG).show();
- Log.e(TAG, e.toString());
- }
- break;
- default:
- break;
- }
- }
- }
- public void saveAppend(String filename, String content) throws Exception{// ctrl+shift+y / x
- FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_APPEND);
- outStream.write(content.getBytes());
- outStream.close();
- }
- public void saveReadable(String filename, String content) throws Exception{// ctrl+shift+y / x
- FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_READABLE);
- outStream.write(content.getBytes());
- outStream.close();
- }
- public void saveWriteable(String filename, String content) throws Exception{// ctrl+shift+y / x
- FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_WRITEABLE);
- outStream.write(content.getBytes());
- outStream.close();
- }
- public void saveRW(String filename, String content) throws Exception{
- FileOutputStream outStream = context.openFileOutput(filename,
- Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE);
- outStream.write(content.getBytes());
- outStream.close();
- }
- public void savePRW(String filename, String content) throws Exception{
- FileOutputStream outStream = context.openFileOutput(filename,
- Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE+Context.MODE_APPEND);
- outStream.write(content.getBytes());
- outStream.close();
- }
- public String readFile(String filename) throws Exception{
- FileInputStream inStream = context.openFileInput(filename);
- byte[] data = readData(inStream);
- return new String(data);
- }
- private byte[] readData(FileInputStream inStream) throws Exception{
- ByteArrayOutputStream outStream = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = 0;
- while( (len = inStream.read(buffer))!= -1){
- outStream.write(buffer, 0, len);
- }
- outStream.close();
- inStream.close();
- return outStream.toByteArray();
- }
- }
- package test.file;
- import test.event.FileButtonOnClickEvent;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.Button;
- public class DateActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 獲取所有按鈕
- Button buttonRead = (Button) this.findViewById(R.id.bt_read);
- Button buttonSave = (Button) this.findViewById(R.id.bt_save);
- // 爲按鈕添加事件
- FileButtonOnClickEvent fileBtOnClickEve = new FileButtonOnClickEvent(this);
- buttonRead.setOnClickListener(fileBtOnClickEve);
- buttonSave.setOnClickListener(fileBtOnClickEve);
- }
- }