Java Android:无法复制资产文件夹中子目录的子目录
我正在尝试将存储在我的应用程序的资产文件夹中的一些预加载内容复制到sdk卡。问题是我似乎无法获得我想要复制的目录的文件路径。我想循环遍历项目中存储在我的资产文件夹中的PreloedContent文件夹,然后将其中的每个文件夹复制到sdk卡中。我可以循环浏览预加载的内容文件名ok,但当我尝试跨以下位置复制目录时,会出现filenotfound异常:Java Android:无法复制资产文件夹中子目录的子目录,java,android,eclipse,Java,Android,Eclipse,我正在尝试将存储在我的应用程序的资产文件夹中的一些预加载内容复制到sdk卡。问题是我似乎无法获得我想要复制的目录的文件路径。我想循环遍历项目中存储在我的资产文件夹中的PreloedContent文件夹,然后将其中的每个文件夹复制到sdk卡中。我可以循环浏览预加载的内容文件名ok,但当我尝试跨以下位置复制目录时,会出现filenotfound异常: - Assets/ -- preloadedcontent/ --- 112/ --- 113/ --- 114/ 此行assetManager.
- Assets/
-- preloadedcontent/
--- 112/
--- 113/
--- 114/
此行assetManager.open(“Preload内容/”+文件名+“/”)上有错误 这是因为
“preload-edcontent/”+filename+“/”
不是有效的文件名(由于后面的斜杠)。
需要打开单个文件的名称 if(id.equals(“AABA/ABO”)){
AssetManager AssetManager=activity.getAssets();
字符串[]文件;
试一试{
files=assetManager.list(“aaba”);
List it=Arrays.asList(文件);
for(字符串:it){
InputStream ims=assetManager.open(“aaba/”+字符串);
//从流创建可绘制的
Drawable d=Drawable.createFromStream(ims,null);
可提取。添加(d);
}
}捕获(IOE){
e、 printStackTrace();
}
}
asset文件夹仅可读,我不会写入。正在将内容复制到其他位置…资产管理器无法处理子文件夹。我为此写了一个解决方案。真正地我想最简单的方法可能是先压缩我预装的内容,然后将压缩文件复制到另一个页面,然后将其解压……还要对其进行一些解释。
private void copyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("preloadedcontent");
} catch (IOException e) {
Log.e("tag", "Failed to get asset file list.", e);
}
for(String filename : files) {
Log.d("file: ",filename);
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open("preloadedcontent/" + filename + "/");
File outFile = new File(_DirectoryName, filename);
out = new FileOutputStream(outFile);
//copyFile(in, out);
File f = stream2file(in,filename);
copyDirectory(f,outFile);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch(IOException e) {
Log.e("tag", "Failed to copy asset file: " + filename, e);
}
}
}
AssetManager assetManager = activity.getAssets();
String[] files;
try {
files = assetManager.list("aaba");
List<String> it = Arrays.asList(files);
for (String string : it) {
InputStream ims = assetManager.open("aaba/" + string);
// create drawable from stream
Drawable d = Drawable.createFromStream(ims, null);
drawable.add(d);
}
} catch (IOException e) {
e.printStackTrace();
}
}