gpt4 book ai didi

java - 将目录和文件从 res/raw 文件夹复制到 SD 卡 - android

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:40 25 4
gpt4 key购买 nike

我有一个文件夹,其中包含一些文件和一些目录,我需要在第一次启动应用程序时将其复制到我的 SD 卡的/mnt/sdcard/Android/data/路径,当然,如果还没有该路径中不存在所需的文件夹。

我会将这个文件夹放在我的应用程序的 res/raw 文件夹中。

我需要执行哪些分步程序才能将文件夹及其所有内容从 res/raw 复制到 SD 卡中的指定路径。

非常感谢任何帮助。

编辑

如果对其他人有帮助,以下是解决方案:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
copyFileOrDir("edu1");//directory name in assets
}
File sdCard = Environment.getExternalStorageDirectory();
private void copyFileOrDir(String path) {
AssetManager assetManager = this.getAssets();
String assets[] = null;
try {
assets = assetManager.list(path);
if (assets.length == 0) {
copyFile(path);
} else {
File dir = new File (sdCard.getAbsolutePath() + "/" + "Android/data");
//String fullPath = "/data/data/" + this.getPackageName() + "/" + path;//path for storing internally to data/data
//File dir = new File(fullPath);
if (!dir.exists()){
System.out.println("Created directory"+sdCard.getAbsolutePath() + "/Android/data");
boolean result = dir.mkdir();
System.out.println("Result of directory creation"+result);
}

for (int i = 0; i < assets.length; ++i) {
copyFileOrDir(path + "/" + assets[i]);
}
}
} catch (IOException ex) {
System.out.println("Exception in copyFileOrDir"+ex);
}
}

private void copyFile(String filename) {
AssetManager assetManager = this.getAssets();

InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
//String newFileName = "/data/data/" + this.getPackageName() + "/" + filename;//path for storing internally to data/data
String newFileName = sdCard.getAbsolutePath() + "/Android/data/" + filename;
out = new FileOutputStream(newFileName);
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (Exception e) {
System.out.println("Exception in copyFile"+e);
}

}
}

最佳答案

我建议您将文件保存在 Assets 中。以下代码可以帮助您将 Assets 目录中的内容复制到 SD 卡。

public static void copyFile(Activity c, String filename) 
{
AssetManager assetManager = c.getAssets();

InputStream in = null;
OutputStream out = null;
try
{
in = assetManager.open(filename);
String newFileName = sdcardpath/filename;
out = new FileOutputStream(newFileName);

byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1)
{
out.write(buffer, 0, read);
}
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (Exception e) {
Utility.printLog("tag", e.getMessage());
}finally{
if(in!=null){
try {
in.close();
} catch (IOException e) {
printLog(TAG, "Exception while closing input stream",e);
}
}
if(out!=null){
try {
out.close();
} catch (IOException e) {
printLog(TAG, "Exception while closing output stream",e);
}
}
}
}

关于java - 将目录和文件从 res/raw 文件夹复制到 SD 卡 - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084393/

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