(1)目录结构
(2) 布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="28dp" android:layout_marginTop="17dp" android:ems="10" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="54dp" android:text="保存信息" /> </RelativeLayout>
package com.example.data_storage_interal.file; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.content.Context; /** * 使用内部存储的方式,可以使应用卸载的时候清除所有的相关信息 * * @author piaodangdehun * */ public class FileService { private Context context; public FileService(Context context) { this.context = context; } /** * 保存内容到文件中 * * @param fileName * : 文件名 * @param mode * :模式 * @param data * :数据的缓冲区 * @return 返回真假值 */ public boolean saveContentToFile(String fileName, int mode, byte[] data) { boolean flag = false; FileOutputStream outputStream = null; try { outputStream = context.openFileOutput(fileName, mode); try { outputStream.write(data, 0, data.length); } catch (IOException e) { e.printStackTrace(); } flag = true; } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (outputStream != null) { try { outputStream.close(); } catch (Exception e2) { } } } return true; } /** * 读取数据 * * @param fileName * @return */ public String readContentFromFile(String fileName) { String result = ""; FileInputStream fileInputStream = null; ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { fileInputStream = context.openFileInput(fileName); int len = 0; byte[] data = new byte[1024]; while ((len = fileInputStream.read(data)) != -1) { outputStream.write(data, 0, len); } return new String(outputStream.toByteArray()); } catch (Exception e) { e.printStackTrace(); } return ""; } /* * 保存文件到Chace中 */ public boolean saveCacheFile(String fileName, byte[] data) { boolean flag = false; File file = context.getFilesDir(); FileOutputStream outputStream = null; try { File folderFile = new File(file.getAbsoluteFile() + "/txt"); if (!folderFile.exists()) { folderFile.mkdirs();// 创建目录 } // context.openFileOutput("my.txt", context.MODE_WORLD_READABLE); outputStream = new FileOutputStream(folderFile.getAbsolutePath() + "/" + fileName); try { outputStream.write(data, 0, data.length); } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } // System.out.println("-->>"+file.getAbsolutePath()); return flag; } /* * 获得文件的完整路径 */ public void listCacheFile() { /* * String[] strings = context.fileList(); for (int i = 0; i < * strings.length; i++) { System.out.println("-->>" + strings); } */ File file = context.getFilesDir(); File root = new File(file.getAbsoluteFile() + "/txt"); File[] listFiles = root.listFiles(); for (File file2 : listFiles) { System.err.println("--->>" + file2.getAbsolutePath()); } } }
package com.example.data_storage_interal; import com.example.data_storage_interal.file.FileService; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private Button button; private EditText editText; private FileService fileService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) this.findViewById(R.id.button1); editText = (EditText) this.findViewById(R.id.editText1); fileService = new FileService(this); /* * 按钮点击的时候存放到文件中 */ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String valueString = editText.getText().toString().trim(); boolean flag = fileService.saveContentToFile("bb.txt", Context.MODE_APPEND, valueString.getBytes()); if (flag) { Toast.makeText(MainActivity.this, "保存成功!", Toast.LENGTH_SHORT).show(); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
(5)测试类(要在资源文件中添加相应的信息、这里不说)
package com.example.data_storage_interal; import com.example.data_storage_interal.file.FileService; import android.app.Service; import android.content.Context; import android.test.AndroidTestCase; import android.util.Log; public class MyTest extends AndroidTestCase { private static final String TAG = "MyTest"; /* * 保存数据 */ public void save() { FileService fileService = new FileService(getContext()); boolean flag = fileService.saveContentToFile("aa.txt", Context.MODE_PRIVATE + Context.MODE_APPEND, "nihao".getBytes()); Log.i(TAG, "--->>" + flag); } /* * 保存数据 */ public void read() { FileService fileService = new FileService(getContext()); String msg = fileService.readContentFromFile("bb.txt"); Log.i(TAG, "--->>" + msg); } public void testChaceFile() { FileService fileService = new FileService(getContext()); fileService.saveCacheFile("hello.txt", "hello world!".getBytes()); } public void testListFile() { FileService fileService = new FileService(getContext()); fileService.listCacheFile(); } }
保存成功后会在data-data-apk的安装目录下找到相应的文件: