Android數據存儲的方式有種,主要有三種。分別爲:文件存儲,SharedPreference存儲,以及數據庫存儲。
我們這裏主要講解文件存儲。
文件存儲是Android種最基本的一種數據存儲方式,它不對存儲內容進行任何的格式話處理,所有的數據都是原封不動的保存到文件中,因此他比較適合簡單的文本數和二進制數據。比如log日誌。如果想要保存一些較爲複雜的文本數據,需要定義一套自己的格式規範。方便自己取出後解析。
保存數據:openFileOutput(String name, int mode)
name:@param name The name of the file to open; can not contain path * separators. 文件名字
默認路徑就是:/data/data/包名/files/你的name
非root是無法查看的,需要用到ADM查看
打開Adroid Device Monitor ,找到圖中的1 File Explorer 然後找到下面對應的包名和你的文件名,選中點擊圖中的2導出到電腦就可以查看了。
mode:
MODE_PRIVATE,//默認操作模式 ,當指定同樣文件名的時候會覆蓋原有文件內容。
MODE_WORLD_READABLE, //允許其他程序對我們的文件進行修改,過於危險 Android4.2以後已被廢除
MODE_WORLD_WRITEABLE,//允許其他程序對我們的文件進行修改,過於危險 Android4.2以後已被廢除
MODE_APPEND,//如果文件不存在就創建文件,如果存在就往後面追加。
獲取數據 openFileInput(String name)
name:@param name The name of the file to open; can not contain path separators. 文件名字
一個小demo實現:輸入一個文本,退出保存。再次進入獲取。如下
保存文件:
public void save(String s) {
BufferedWriter bufferedWriter = null;
try {
FileOutputStream mydata = openFileOutput("mydata", MODE_PRIVATE);
bufferedWriter = new BufferedWriter(new OutputStreamWriter(mydata));
bufferedWriter.write(s);
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.d("TAG", "FileNotFoundException:" + e.getMessage());
} catch (IOException e) {
e.printStackTrace();
Log.d("TAG", "IOException:" + e.getMessage());
} finally {
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
Log.d("TAG", "IOException:" + e.getMessage());
}
}
}
}
獲取文件:
public String load() {
StringBuffer sb = new StringBuffer();
BufferedReader bufferedReader = null;
try {
FileInputStream mydata = openFileInput("mydata");
bufferedReader = new BufferedReader(new InputStreamReader(mydata));
String line = "";
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
轉發表明出處:https://blog.csdn.net/qq_35698774/article/details/106660663
android互助羣:
感謝:郭霖的《第一行代碼 第二版》