其實寫入或讀取內部/外部記憶體只差在一個要增加權限(androidmanifest.xml)一個不用而已,
所以如果你是要寫入sd卡,還是可以看一下這篇:)
寫入的部分:
//寫入檔案
private String filename = "MySampleFile.txt";
private String filepath = "MyFileStorage";
File myInternalFile;
.............以上為宣告...................
// 目前時間
Date date = new Date();
// 設定日期格式
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm:ss");
// 進行轉換
String dateString = sdf.format(date);
try {
ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
File directory = contextWrapper.getDir(filepath,MODE_APPEND);// 不存在就創建,存在就追加
myInternalFile = new File(directory, filename);
FileOutputStream fos = new FileOutputStream(myInternalFile,true);//要加上true才會是append否則預設false
String s = dateString + "," + event+"\n";// +事件
fos.write(s.getBytes());
fos.close();
Log.d("foutstream", "stream");
} catch (IOException e) {
e.printStackTrace();
}
看起來十分簡單,實際運作也十分簡單。
建立一個檔案,這邊記得要用MODE_APPEND(不存在就創建檔案,存在就繼續寫下去),如果用MODE_PRIVATE會蓋掉喔!
然後在FileOutputStream這邊預設是false(append false),因此要改成
FileOutputStream fos = new FileOutputStream(myInternalFile,true);
這樣才能成功複寫。
讀取的部分:
String myData = "";
try {
FileInputStream fis = new FileInputStream(myInternalFile);
DataInputStream in = new DataInputStream(fis);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
myData = myData + strLine + "\n";
}
in.close();
}catch(Exception e){}
就是用FileInputStream讀取,然後每行每行讀出來,讀到沒有為止,最後記得一樣要關stream!
十分的簡單,但也花了我不少時間,記錄一下。END
這算是我覺得最有用的方法了
回覆刪除謝謝