我使用下面的代码将文件从资产复制到Sdcard。
代码:
File file3 = new File("/sdcard/Alone.mp4");
if(!(file3.exists())) {
ArrayList<String> files = new ArrayList<String>();
files.add("Alone.mp4");
new myAsyncTask().execute(files);
}
// AsyncTass for the Progress Dialog and to do Background Process
private class myAsyncTask extends AsyncTask<ArrayList<String>, Void, Void> {
ArrayList<String> files;
ProgressDialog dialog;
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(MainScreenActivity.this, "Speech Tutor", "Loading...");
}
@Override
protected Void doInBackground(ArrayList<String>... params) {
files = params[0];
for (int i = 0; i < files.size(); i++) {
copyFileFromAssetsToSDCard(files.get(i));
} return null;
}
@Override
protected void onPostExecute(Void result) {
dialog.dismiss();
}
}
// Function to copy file from Assets to the SDCard
public void copyFileFromAssetsToSDCard(String fileFromAssets){
AssetManager is = this.getAssets();
InputStream fis;
try {
fis = is.open(fileFromAssets);
FileOutputStream fos;
// if (!APP_FILE_PATH.exists()) {
// APP_FILE_PATH.mkdirs();
// }
fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory(),fileFromAssets));
byte[] b = new byte[8];
int i;
while ((i = fis.read(b)) != -1) {
fos.write(b, 0, i);
}
fos.flush();
fos.close();
fis.close();
}
catch (IOException e1) {
e1.printStackTrace();
}
}
现在,通过上面的代码,我可以将文件从资产复制到SD卡。但不是我想要的是将复制文件存储到SD卡中可用的另一个目录。
那怎么办?
感谢。
答案 0 :(得分:2)
如果要将文件存储在SD卡的某个特定文件夹中,则以下是代码。
Environment.getExternalStorageDirectory()+“/ folderName /”
如果您期待创建一个新文件夹,那么以下是代码。
String tempDir = Environment.getExternalStorageDirectory() + "/" + getResources().getString(R.string.foldername) + "/";
prepareDirectory();
private boolean prepareDirectory(){
try {
if (makedirs()){
return true;
} else {
return false;
}
} catch (Exception e){
e.printStackTrace();
Toast.makeText(this, "Could not initiate File System.. Is Sdcard mounted properly?", 1000).show();
return false;
}
}
private boolean makedirs(){
File tempdir = new File(tempDir);
if (!tempdir.exists())
tempdir.mkdirs();
if (tempdir.isDirectory()){
File[] files = tempdir.listFiles();
for (File file : files){
if (!file.delete()){
}
}
}
return (tempdir.isDirectory());
}