文件操作所需要的權限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
/**
* AndroidManifest添加寫入數據的權限
* * Andriod 23以後,就算是添加權限也需要在使用時動態請求,否則文件操作會失敗
* * 外部存儲:
* * 保存外部SD卡中,使用之前確定SD卡可用
* * 確保當前SD卡可用
* * 獲取SD卡的根路徑
* * 創建文件對象,由於不同手機SDcard目錄不同,
* * 所以我們通過Environment.getExternalStorageDirectory()獲得路徑。
*/
public class FileoperationActivity extends AppCompatActivity {
//一級文件夾路徑
public final static String Folder_NAME = Environment.getExternalStorageDirectory() + File.separator + "HelloTest";
//二級文件夾路徑
public final static String Second_PATH = Folder_NAME + File.separator + "SecondFolder" + File.separator;
//文件路徑
public static final String FILE_NAME = Folder_NAME + File.separator + "HelloTest.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fileoperation);
FolderCreate();
FileCreate();
FileWrite();
FileRead();
}
/**
* 文件夾創建
*/
private void FolderCreate() {
//mkdirs()可以建立多級文件夾, mkdir()只會建立一級的文件夾
File dirFirstFolder = new File(Second_PATH);
if (!dirFirstFolder.exists()) {
dirFirstFolder.mkdirs();
}
}
/**
* 文件創建
*/
private void FileCreate() {
File file = new File(FILE_NAME);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 文件的寫入
*/
private void FileWrite() {
File file = new File(FILE_NAME);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream fos = new FileOutputStream(file);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
bw.write(System.currentTimeMillis() + "你好啊");
bw.flush();
bw.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 文件的讀取
*/
private void FileRead() {
try {
File file = new File(FILE_NAME);
BufferedReader br = new BufferedReader(new FileReader(file));
String readline = "";
StringBuffer sb = new StringBuffer();
while ((readline = br.readLine()) != null) {
System.out.println("readline:" + readline);
sb.append(readline);
}
br.close();
System.out.println("讀取成功:" + sb.toString());
Toast.makeText(this, sb, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
}