我想我对文件如何存储在实际机器(甚至模拟器)上有点困惑。
在编程时,我可以手动将我的 xml 文件保存在 assets 文件夹中,但是如何编写一个必须连接到网络并下载文件的应用程序,将其保存在某个地方然后对其进行操作?它将在哪里存储所述文件?
我想创建一个新文件,但我在另一篇文章中读到,资产文件夹一旦打包就无法使用;那么它们是在哪里创建和存储的呢?他们怎么能被转移。只是,我是这个平台的新手,文件系统有点混乱。
我想我对文件如何存储在实际机器(甚至模拟器)上有点困惑。
在编程时,我可以手动将我的 xml 文件保存在 assets 文件夹中,但是如何编写一个必须连接到网络并下载文件的应用程序,将其保存在某个地方然后对其进行操作?它将在哪里存储所述文件?
我想创建一个新文件,但我在另一篇文章中读到,资产文件夹一旦打包就无法使用;那么它们是在哪里创建和存储的呢?他们怎么能被转移。只是,我是这个平台的新手,文件系统有点混乱。
如果您想使用更新的 XML,您应该考虑将文件从资产复制到设备存储。您可以查看如何将文件从“资产”文件夹复制到 sdcard?知道如何做到这一点。
另一种选择是使用数据库,您可以在其中存储来自 XML 的解析数据。这样您就无需在需要访问内容时解析文件。
即使我遇到了这个问题。现在我有一个具有应用程序属性的 xml 文件。它被打包在资产文件夹中。打包后,我们无法编辑资产文件夹中的文件。现在在应用程序加载时,我只需将此文件复制到由
context.getFilesDir().getAbsolutePath();
应用程序从同一个地方编辑它。您可以在DDMS视图的FileExplorer面板中查看文件是否被修改。该文件存储在与您的应用程序包名称相同的文件夹中,例如:com.abhi.maps
或者,您也可以将其复制到 SD 卡。但是这是有风险的,因为 sd 卡可能始终可用。
您可以使用以下代码从 assets 文件夹中复制文件:
private static void copyFile(String filename, Context context) {
AssetManager assetManager = context.getAssets();
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
String newFileName = context.getFilesDir() + "/" + 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) {
Log.e("tag", e.getMessage());
}
}
希望能帮助到你!:)
您有两个选择:从您的活动中调用 getFilesDir() 以获取只能从您的应用程序读取/写入的内部数据文件夹的路径。
或者,您可以将 xml 文件写入/读取到外部存储(SD 卡)。使用方法 Environment.getExternalStorageDirectory() 获取外部存储的根路径,然后根据需要创建自己的文件夹。
请注意,如果您写入外部存储,手机中的每个应用程序都可以访问它。