Android程式函式 將assets資料夾下的檔案複製到手機的sd卡中(包括子資料夾)
最近在做個功能是將asset資料夾下的所有檔案(包括子檔案)全部拷貝出來到指定目錄下。所用的方法無非是用AssetManager。但是這裡 有個問題是也要講子資料夾和子檔案都要拷貝出來。到網上Google了下,也到baidu搜尋了下,發現了很多類似問題。但好像都有問題。顯然只能做到將asset直接目錄下的檔案拷貝出來,但子資料夾拷貝不出來,而且,碰到資料夾,會拋異常。無奈自己只好動手寫了個。如下:
private void CopyAssets(String assetDir,String dir) {
String[] files;
try
{
files = this.getResources().getAssets().list(assetDir);
}
catch (IOException e1)
{
return;
}
File mWorkingPath = new File(dir);
//if this directory does not exists, make one.
if(!mWorkingPath.exists())
{
if(!mWorkingPath.mkdirs())
{
}
}
for(int i = 0; i < files.length; i++)
{
try
{
String fileName = files[i];
//we make sure file name not contains '.' to be a folder.
if(!fileName.contains("."))
{
if(0==assetDir.length())
{
CopyAssets(fileName,dir+fileName+"/");
}
else
{
CopyAssets(assetDir+"/"+fileName,dir+fileName+"/");
}
continue;
}
File outFile = new File(mWorkingPath, fileName);
if(outFile.exists())
outFile.delete();
InputStream in =null;
if(0!=assetDir.length())
in = getAssets().open(assetDir+"/"+fileName);
else
in = getAssets().open(fileName);
OutputStream out = new FileOutputStream(outFile); 商賬追收
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0)
{
out.write(buf, 0, len);
}
in.close();
out.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
} iphone拍照小技巧
catch (IOException e)
{
e.printStackTrace();
}
}
這裡主要用到了遞迴,其他倒是沒有什麼。倒是這裡還有個存在的問題:如何判斷路徑的是個資料夾還是檔案,我目前使用的方法就是判斷有沒有字尾,這個可能存在問題。
相關文章
- C# 將資料夾中檔案複製到另一個資料夾C#
- 獲取資料夾及其子資料夾下的所有檔案
- python 如何刪除資料夾下的所有檔案和子資料夾?Python
- sd卡中的資料夾刪除了怎麼恢復,SD卡刪除的檔案如何恢復SD卡
- Java中實現複製檔案或資料夾Java
- Unity Assets目錄下的資料夾用途Unity
- C# 對檔案與資料夾的操作包括刪除、移動與複製C#
- Python求取資料夾內的檔案數量、子資料夾內的檔案數量Python
- 利用java本地複製檔案及資料夾 (轉)Java
- 獲取一個資料夾下所有指定字尾名(.java)的檔案(包括子資料夾中的內容),並將這些檔案的絕對路徑寫入到一個文字檔案中Java
- Unity Assets目錄下的特殊資料夾名稱Unity
- Linux統計某資料夾下檔案、資料夾的個數Linux
- 在Docker容器和主機之間複製檔案/資料夾Docker
- 查詢某資料夾下所有子資料夾內的py檔案-3一行程式碼搞定行程
- 把多個資料夾中的檔案批量放到一個資料夾
- .Net引用根目錄子資料夾下的dll檔案
- Ubuntu下(跨機)檔案、資料夾的複製、刪除、重新命名、移動、備份Ubuntu
- Android 播放raw資料夾下音訊檔案Android音訊
- android 統計資料夾大小及刪除資料夾下所有檔案和路徑Android
- java檔案和資料夾複製、刪除、移動操作Java
- 用TC來實現只複製資料夾而不復制資料夾中的內容
- 畸形檔案 資料夾
- Vue中的靜態資源管理(src下的assets和static資料夾的區別)Vue
- TF卡資料夾右擊檢視屬性時它說“資料夾變檔案”
- 統計檔案數目(不包括隱藏檔案/資料夾)
- .gitignore 在已忽略資料夾中不忽略指定檔案、資料夾...Git
- Android中asset資料夾和raw資料夾區別Android
- Qt 選擇資料夾、建立資料夾以及建立檔案QT
- Android遞迴刪除資料夾下所有檔案Android遞迴
- 資料夾的複製--遞迴演算法遞迴演算法
- 複製指定源位置的多級資料夾下所有檔案到指定目標位置
- C++讀取某個資料夾下面的子資料夾及其所有檔案C++
- asp.net 遞迴刪除資料夾及其子資料夾和所有檔案[轉]ASP.NET遞迴
- ftp複製檔案或資料夾時出錯,操作超時FTP
- Mac使用終端複製資料夾內特定檔案型別Mac型別
- CRS bin資料夾中的程式
- matlab遍歷資料夾下的所有檔案Matlab
- java中建立以一年中日期命名的資料夾,複製檔案 刪除檔案(完整程式碼)Java