在操作手機存儲之前得先加權限(6.0之後還得動態申請權限:)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
File的一些基本方法
boolean file.mkdir()//創建目錄
boolean file.mkdirs() //創建多級目錄
boolean file.createNewFile()//創建一個新文件夾
boolean file.exists() //文件是否存在
boolean file.isFile() //是否是文件
boolean file.isDirectory() //是否是目錄
boolean file.isHidden() //是否隱藏(windows上可以設置某個文件是否隱藏)
boolean file.isAbsolute() //是否爲絕對路徑
boolean file.canRead() //是否可讀
boolean file.canWrite() //是否可寫
boolean file.canExecute() //是否可執行
String file.getName() //獲取文件的名字,只是名字,沒有路徑
String file.getParent() //獲取父目錄的絕對路徑,返回值是一個字符串。如果文件有父目錄,那麼返回父目錄的絕對路徑,(比如:`E:\cat`) , 如果文件本身就在磁盤的根目錄,那麼返回磁盤的路徑,(比如:`E:\`)。
File file.getParentFile() //獲取父文件,返回值是一個File對象。
long time = file.lastModified() ; //返回文件最後一次修改的時間
Date dt = new Date(time);
boolean renameTo(File file) //文件命名
long file.length() //返回文件的大小,單位字節
boolean file.delete() //刪除文件
String[] file.list() //獲取該目錄下的所有的文件的名字。如果`file`爲文件,返回值爲`null`,在使用時記得判空;但是如果`file`爲目錄,那麼返回這個目錄下所有文件的名字,只是名字,不含路徑;如果`file`是一個空目錄,返回一個長度爲0的數組;從上面的結果可以看出,`list()` 方法,只是對`file`爲目錄時有效,當`file`爲一個文件的時候,該方法毫無意義。
File[] file.listFiles() //獲取該目錄下的所有的文件。如果`file`爲文件,返回值爲`null`,在使用時記得判空;但是如果`file`爲目錄,那麼返回這個目錄下所有的文件 ;如果`file`是一個空目錄,返回一個長度爲0的數組;從上面的結果可以看出,`listFiles()` 方法,只是對`file`爲目錄時有效,當`file`爲一個文件的時候,該方法毫無意義。
判斷SD卡是否可用
public static boolean isSDCardEnable(){
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
}
刪除文件
//file不能爲空,文件不存在返回true,文件存在並且成功刪除返回true
public static boolean deleteFile(File file) {
return file != null && (!file.exists() || file.isFile() && file.delete());
}
刪除目錄及目錄下所有文件
//刪除目錄及目錄下的所有文件
public static boolean deleteDir(File dir) {
if (dir == null) {
return false;
}
// 目錄不存在返回true
if (!dir.exists()) {
return true;
}
// 不是目錄返回false
if (!dir.isDirectory()) {
return false;
}
// 現在文件存在且是文件夾
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile()) {
if (!deleteFile(file)) {
return false;
}
} else if (file.isDirectory()) {
if (!deleteDir(file)) {
return false;
}
}
}
return dir.delete();
}
刪除指定目錄下的所有文件
public static boolean deleteFilesInDir(File dir){
if(dir == null){
return false;
}
if(!dir.exists()){
return true;
}
if(!dir.isDirectory()){
return false;
}
File[] files = dir.listFiles();
if(files !=null && files.length!=0){
for(File file:files){
//如果是文件
if(file.isFile()){
if(!deleteFile(file)){
return false;
}
}
//如果是文件夾
else if(file.isDirectory()){
if(!deleteDir(file)){
return false;
}
}
}
}
return true;
}