界面截图
布局文件
<?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); } }