如何在android中将文件写入assets文件夹或raw文件夹?

时间:2010-09-21 13:15:48

标签: android

我正在开发一些应用程序,我必须从某个http位置更新assets / raw文件夹运行时中的某些文件。

任何人都可以通过分享如何在资源或原始文件夹中写入文件来帮助我吗?

5 个答案:

答案 0 :(得分:127)

无法做到。这是不可能的。

答案 1 :(得分:14)

为什么不更新本地文件系统上的文件呢? 您可以将文件读/写到应用程序沙箱区域。

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

您可能想要查看的其他替代方法是共享权限和使用缓存文件(所有这些都在上面的链接中描述)

答案 2 :(得分:10)

您无法将数据写入 asset / Raw 文件夹,因为它已打包( .apk )且不可扩展。

如果您的应用程序需要从服务器下载依赖项文件,您可以使用android(http://developer.android.com/guide/market/expansion-files.html)提供的APK扩展文件。

答案 3 :(得分:1)

针对同一问题的另一种方法可能对您有所帮助 在应用程序的私有上下文中读写文件

                 String NOTE = "note.txt";  
                 private void writeToFile() {
        try {
         OutputStreamWriter out = new OutputStreamWriter(openFileOutput(
                NOTES, 0));

         out.write("testing");
         out.close();
         }

        catch (Throwable t) {
        Toast.makeText(this, "Exception: " + t.toString(), 2000).show();
        }
             }


           private void ReadFromFile()
      {
        try {
        InputStream in = openFileInput(NOTES);
        if (in != null) {
            InputStreamReader tmp = new InputStreamReader(in);
            BufferedReader reader = new BufferedReader(tmp);
            String str;
            StringBuffer buf = new StringBuffer();
            while ((str = reader.readLine()) != null) {
                buf.append(str + "\n");
            }
            in.close();
            String temp = "Not Working";
            temp = buf.toString();
            Toast.makeText(this, temp, Toast.LENGTH_SHORT).show();
        }
    } catch (java.io.FileNotFoundException e) {
        // that's OK, we probably haven't created it yet
    } catch (Throwable t) {
        Toast.makeText(this, "Exception: " + t.toString(), 2000).show();
    }
}

答案 4 :(得分:0)

您无法在资产中编写JSON文件。如上所述,资产是只读的。但是您可以将资产(json文件/资产中的任何其他内容)复制到移动设备的本地存储,然后从本地存储进行编辑(写入/读取)。可以使用更多存储选项,如共享首选项(适用于小数据)和sqlite数据库(适用于大数据)。