[英]Copy File Assets To SDCard Activity (Android app) need ideas
我需要將資產內的所有文件夾復制到SDCARD上的特定文件夾。 假設我們的目標文件夾“ RESULT_HERE”位於“ MAIN_FOLDER”文件夾下
我使用了這段代碼,但完全沒有結果。 無法復制文件,甚至無法創建文件夾。 我用了這段代碼 。
有任何想法嗎?
我修改了一個代碼,以復制具有Assets文件夾相同結構的所有文件夾和文件。 只需替換CopyFiles方法的代碼即可。
private void CopyFiles(String sdCardPath, String assetFilename){
AssetManager assetManager = getAssets();
try {
String[] files = assetManager.list(assetFilename);
//Try as file
if(files.length == 0){
InputStream in;
OutputStream out;
String fileName = assetFilename.substring(assetFilename.lastIndexOf(File.separator) + 1);
File file = new File(sdCardPath + File.separator + assetFilename.substring(0, assetFilename.length() - fileName.length()));
if(!file.exists())
file.mkdir();
in = assetManager.open(assetFilename);
out = new FileOutputStream(file.getAbsolutePath() + File.separator + fileName);
copyFile(in, out);
in.close();
out.flush();
out.close();
}
//Try as folder
else{
for (String assetFile : files){
String newAssetFilename = assetFilename.length() > 0
? assetFilename + File.separator +assetFile // Is on internal folder
: assetFile; // Is on root of asset folder
CopyFiles(sdCardPath, newAssetFilename);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
要調用此函數,您必須調用:
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
CopyFiles(Environment.getExternalStorageDirectory() + File.separator + INTERNAL_PATH, "");
其中INTERNAL_PATH是文件夾的相對路徑。 函數Environment.getExternalStorageState()用於確保存在SD卡。
另外,請記住,那么您必須在Manifest上聲明關注權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.