界面截图
布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/labelFileName" /> <EditText android:id="@+id/fileName" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/labelFileContext" /> <EditText android:id="@+id/fileContext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:lines="3" /> <Button android:id="@+id/saveBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/saveBtn" /> </LinearLayout>
string文件
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">文件保存</string> <string name="labelFileName">文件名称</string> <string name="labelFileContext">文件内容</string> <string name="saveBtn">保存文件</string> <string name="success">文件保存完成</string> <string name="fail">文件保存失败</string> </resources>
Activity类
package com.webyun.app;
import com.webyun.app.service.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class AndroidFileOpeActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据ID查找文件保存按钮
Button saveFileBtn = (Button)this.findViewById(R.id.saveBtn);
//为文件保存按钮设置点击事件
saveFileBtn.setOnClickListener(new ButtonClickListener());
}
private final class ButtonClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
//根据ID查找文件名输入框控件
EditText fileName = (EditText)findViewById(R.id.fileName);
//根据ID查找文件内容输入框控件
EditText fileContext = (EditText)findViewById(R.id.fileContext);
//获取用户输入的文件名
String fileNameStr = fileName.getText().toString();
//获取用户输入的文件内容
String fileContextStr = fileContext.getText().toString();
//调用业务类的文件保存方法,保存文件
FileService fileService = new FileService(getApplicationContext());
try {
fileService.save(fileNameStr, fileContextStr);
//提示文件保存成功
Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_LONG).show();
} catch (Exception e) {
//提示文件保存失败
Toast.makeText(getApplicationContext(), R.string.fail, Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}
}
业务类FileService
package com.webyun.app.service;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import android.content.Context;
public class FileService {
/**
* 应用上下文对象
*/
private Context context;
public FileService(Context context) {
this.context = context;
}
/**
* 保存文件,文件将默认保存在:/data/data/应用所在包/files/
* @param fileNameStr 文件名称
* @param fileContextStr 文件内容
*/
public void save(String fileNameStr, String fileContextStr) throws Exception {
/**
* 私有操作模式:
* 创建出来的文件只能被本应用访问,其他应用无法访问该文件。
* 另外采用私有操作模式创建的文件,写入文件中的内容会覆盖原文件的内容。
*/
FileOutputStream outputStream = this.context.openFileOutput(fileNameStr, Context.MODE_PRIVATE);
outputStream.write(fileContextStr.getBytes());
outputStream.close();
}
/**
* 读取文件内容
* @param fileName 文件名称
* @return 文件内容
* @throws Exception
*/
public String read(String fileName) throws Exception {
//默认从:/data/data/应用所在包/files/下读取文件
FileInputStream inputStream = this.context.openFileInput(fileName);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while((len = inputStream.read(buffer)) != -1){
//将数据写入到内存输出流中
outputStream.write(buffer, 0, len);
}
byte[] data = outputStream.toByteArray();
return new String(data);
}
}