-1

我想我对文件如何存储在实际机器(甚至模拟器)上有点困惑。

在编程时,我可以手动将我的 xml 文件保存在 assets 文件夹中,但是如何编写一个必须连接到网络并下载文件的应用程序,将其保存在某个地方然后对其进行操作?它将在哪里存储所述文件?

我想创建一个新文件,但我在另一篇文章中读到,资产文件夹一旦打包就无法使用;那么它们是在哪里创建和存储的呢?他们怎么能被转移。只是,我是这个平台的新手,文件系统有点混乱。

4

3 回答 3

0

如果您想使用更新的 XML,您应该考虑将文件从资产复制到设备存储。您可以查看如何将文件从“资产”文件夹复制到 sdcard?知道如何做到这一点。

另一种选择是使用数据库,您可以在其中存储来自 XML 的解析数据。这样您就无需在需要访问内容时解析文件。

于 2012-07-04T05:56:38.760 回答
0

即使我遇到了这个问题。现在我有一个具有应用程序属性的 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());
    }

}

希望能帮助到你!:)

于 2012-07-04T06:11:20.610 回答
0

您有两个选择:从您的活动中调用 getFilesDir() 以获取只能从您的应用程序读取/写入的内部数据文件夹的路径。

或者,您可以将 xml 文件写入/读取到外部存储(SD 卡)。使用方法 Environment.getExternalStorageDirectory() 获取外部存储的根路径,然后根据需要创建自己的文件夹。

请注意,如果您写入外部存储,手机中的每个应用程序都可以访问它。

于 2012-07-04T05:59:00.407 回答