(1)目錄結構
(2) 布局文件:
<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">
(3)保存數據、讀取數據的工具類:FileService.java
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 utputStream = null; try { utputStream = 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 utputStream = 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 utputStream = null; try { File folderFile = new File(file.getAbsoluteFile() + "/txt"); if (!folderFile.exists()) { folderFile.mkdirs();// 創建目錄 } // context.openFileOutput("my.txt", context.MODE_WORLD_READABLE); utputStream = 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()); } }}(4)MainActivity.java
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的安裝目錄下找到相應的文件: