一、內部存儲
永遠可用,因為不可以拆卸。文件默認情況下只對你的APP可用,是私有的。當用戶卸載APP時,系統會自定移除APP在內部存儲上的所有文件
//創建和寫入一個內部存儲的私有文件
public void WriteFiles(String string) {
try {
//填入文件名和操作模式
FileOutputStream fos = openFileOutput("a.txt", MODE_PRIVATE);
//通過write()函數寫入數據。
fos.write(string.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//讀取一個內部存儲的私有文件
public String readFiles() {
String string = null;
try {
FileInputStream fis = openFileInput("a.txt");
StringBuilder sb = new StringBuilder();
byte[] buffer = new byte[1024];
int len = 0;
//讀取字節
while ((len = fis.read(buffer)) != -1) {
sb.append(new String(buffer, 0, len));
}
string = sb.toString();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return string;
}
二、外部存儲
不一定一直可訪問,因為用戶可以拆卸外部存儲設備。文件是全局可度的,沒有訪問限制,可以和其他APP共享數據
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//創建文件
sdCardDir = Environment.getExternalStorageDirectory();
saveFile = new File(sdCardDir, "a.txt");
//獲取sd卡狀態
private void storageCard() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
//可讀可寫
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// 可讀
} else {
}
}
//寫入數據
public void writeFiles(String string) {
try {
FileOutputStream fos = new FileOutputStream(saveFile);
fos.write(string.getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//讀取數據
private String readFiles() {
String string = null;
try {
FileInputStream fis = new FileInputStream(saveFile);
int len = 0;
byte[] buf = new byte[1024];
StringBuffer sb = new StringBuffer();
while ((len = fis.read(buf)) != -1) {
sb.append(new String(buf, 0, len));
}
string = sb.toString();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
return string;
}