【发布时间】:2010-09-21 13:15:47
【问题描述】:
我正在开发一些应用程序,我必须从某个 http 位置更新资产/原始文件夹运行时中存在的一些文件。
谁能帮我分享如何在资产或原始文件夹中写入文件?
【问题讨论】:
-
assets/raw 文件夹在手机上不存在。它们被编译到包中
标签: android
我正在开发一些应用程序,我必须从某个 http 位置更新资产/原始文件夹运行时中存在的一些文件。
谁能帮我分享如何在资产或原始文件夹中写入文件?
【问题讨论】:
标签: android
这是不可能的。这是不可能的。
【讨论】:
您不能在资产中写入 JSON 文件。如前所述,资产是只读的。但是您可以将资产(json 文件/ assets 中的任何其他内容)复制到移动设备的本地存储中,然后从本地存储中编辑(写入/读取)。提供更多存储选项,例如共享首选项(适用于小数据)和 sqlite 数据库(适用于大数据)。
【讨论】:
您不能将数据写入 asset/Raw 文件夹,因为它是打包的 (.apk) 且大小不可扩展。
如果你的应用需要从服务器下载依赖文件,你可以去android提供的APK扩展文件(http://developer.android.com/guide/market/expansion-files.html)。
【讨论】:
为什么不更新本地文件系统上的文件呢? 您可以将文件读/写到您的应用程序沙盒区域。
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
您可能想要研究的其他替代方法是共享参数和使用缓存文件(所有内容都在上面的链接中描述)
【讨论】:
解决同一问题的另一种方法可能会对您有所帮助 在应用程序的私有上下文中读写文件
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();
}
}
【讨论】: