android - 从资产文件夹复制文件

时间:2012-03-28 14:30:50

标签: java android

我需要将我的应用程序的assets文件夹中的所有文件复制到SD卡中,以便我可以通过我的Web服务更新来写入此文件夹。但是,我似乎找不到正确的道路。下面是我目前使用的代码,用于复制数据库:

public PluginResult execute(String arg0, JSONArray arg1, String arg2) 
{
    String[] resourseFileNames = {"file1.html","file2.html"};   
    final int length = resourseFileNames.length;

    try
    {
        String pName = this.getClass().getPackage().getName();
        this.copyOriginal("Databases.db","/data/data/"+pName+"/app_database/");
        this.copyOriginal("0000000000000001.db","/data/data/"+pName+"/app_database/file__0/");
        for(int i=0; i<length; i++)
        {
            this.copyOriginal("file:///android_asset/www/" + resourseFileNames[i],"file:///SDCard/MYAPP/www/" + resourseFileNames[i]);
        }
    }
    catch (IOException e)
    {
        System.err.println("Caught IOException: " + e.getMessage());
    }
}

void copyOriginal(String file, String folder) throws IOException 
 {
    File CheckDirectory;
    CheckDirectory = new File(folder);
    if (!CheckDirectory.exists())
    { 
    CheckDirectory.mkdir();
    }

    OutputStream out = new FileOutputStream(folder+file);
    InputStream in = this.ctx.getAssets().open(file);
    byte[] buf = new byte[1024];
    int len; while ((len = in.read(buf)) > 0) out.write(buf, 0, len);
    in.close(); 
    out.close();      
}

这里的任何帮助都会非常感激,我相信我很接近,我认为错误的文件路径因为我一直收到错误(logCat - '我的文件路径defienet'(没有这样的文件或目录)。

由于

2 个答案:

答案 0 :(得分:0)

你的清单文件中有这行吗?

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

答案 1 :(得分:0)

我上面的代码似乎是正确的,它无法正常工作的原因是由于我的传输文件太大了。最简单的解决方案是将我的固件升级到2.3.3 +