gpt4 book ai didi

android - Android中如何将文件存储到指定的外部目录

转载 作者:行者123 更新时间:2023-11-30 01:22:26 25 4
gpt4 key购买 nike

我正在尝试将一些文件从我的 Assets 文件夹(并创建一些新文件)复制到外部文件夹。

我知道我需要以下权限 -

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

然后,我应该检查外部存储状态如下(使用android官方示例的代码示例)-

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}

然后,我可以使用 getExternalFilesDir() 作为 -

String finalOutputFilePath = context.getExternalFilesDir(null) + "/" + databaseName;

它会将文件保存到类似的地方 - Android/data/myPackageName/files/

但是,我希望将文件存储在特定文件夹中,例如 -

  • 创建一个名为“MyTestDirectory”的文件夹,如果不存在的话外部存储的基础(我不是在写sdcard/MyTestDirectory,当我读到外部存储命名法时可能因设备而异)和
  • 仅在该特定文件夹中存储/复制文件

那么,我的问题是如何选择(创建和使用)指定的文件夹?

附言- 我想,这个问题可能已经在 SO 上得到了回答,但我找不到。

最佳答案

要创建文件夹,请使用 createFolder 方法。

private void createFolder(String folderName){
File file=new File(Environment.getExternalStorageDirectory() + File.separator +folderName);
if(!file.exists())
file.mkdirs();
}


private void CopyAssets(String folderName) {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("Files");
} catch (IOException e) {
Log.e("tag", e.getMessage());
}

for(String filename : files) {
System.out.println("File name => "+filename);
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open("Files/"+filename); // if files resides inside the "Files" directory itself
out = new FileOutputStream(Environment.getExternalStorageDirectory().toString()+File.separator +folderName +"/" + filename);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch(Exception e) {
Log.e("tag", e.getMessage());
}
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}

关于android - Android中如何将文件存储到指定的外部目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36892551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com