【问题标题】:Where to put text files in directory in Android将文本文件放在Android目录中的位置
【发布时间】:2012-02-25 13:27:03
【问题描述】:

我有一个文本文件想包含在我的 Android 应用程序中,它不是字符串文件,而是标准文本文件。它包含定义在板上绘制的“地图”特征的数据。该文件不是 XML 文件,所以我不确定我应该把它放在哪里,或者这对于 android 来说是否不是好的文件结构?你打算这样做吗?如果您在哪个目录下,您应该将它们放在哪个目录下?那么您打算如何访问该文件?我知道如何使用 FileInputStreams 和 FileOutputStreams 我只需要知道如何访问文件。欢迎并感谢所有相关答案!

【问题讨论】:

标签: java android file


【解决方案1】:

在您的 android 文件夹结构中使用 assetsraw 文件夹来保留该文件。更多信息请阅读this

【讨论】:

  • 接受的答案在这里有更多关于资产文件夹的信息:stackoverflow.com/questions/18302603/…
  • 如何从安卓应用中的应用文件夹中读取文件?如果我将 .properties 文件保存在 assets 文件夹下,那么它可以通过逆向工程看到。
  • 永远不要在应用程序/源代码中烘烤您的秘密内容...始终从您将拥有更多控制权的在线资源请求。这是经验法则。
  • 如果您的文件在资产中,则无法写入文件。
【解决方案2】:

您必须按照 Waqas 所说的将文件放在 assets 文件夹中。

现在要访问它,您可以这样做。

我给你一个使用 BufferedReader 的例子

BufferedReader reader = new BufferedReader(
                 new InputStreamReader(getAssets().open("YourTextFile.txt")));

小心。就我而言,我现在不知道为什么,我无法读取大于 ~1MB 的文本文件,我不得不将它们拆分为多个小文件。似乎其他人也有同样的文件大小问题,但我在 Android 开发者网站上没有找到任何相关信息。如果有人对此了解更多......

跟进

我对 1MB 的问题是由于 Android 早期版本的已知错误/限制。由于使用的是最新版本的 Android,该问题不再存在。

【讨论】:

  • 我只是当你问“我只需要知道如何访问文件”时,Waqas 缺少显示一个示例,所以对我来说答案是“不完整”,同时也给你关于文本文件大小。但这不是比赛!我们在这里互相帮助
  • 您实际上可以访问资产,而无需打开流并逐字节读取文件。您可以改为使用file://android_asset/file.txt,它可以让您立即访问该文件。您可以从中创建一个 File 对象或做任何您喜欢的事情。
【解决方案3】:

我只想添加到已接受的答案(不幸的是,我没有足够的声誉发表评论。)该教程的链接解释了如何设置 res/raw 方法或 assets 方法大多很好,但实际上有一个更简单的方法。查看那里描述的名为 LoadFile 的函数。该函数相当冗长。假设您只需要一个 InputStream 变量,以便您可以读取和写入文件。然后删除第 77 行之后的所有内容!此外,您根本不需要资源 ID!你可以使用这个功能:

//get the file as a stream
iS = resources.openRawResource(R.raw.mygpslog)

现在您所要做的就是返回 iS,您将获得您想要的文件句柄。

【讨论】:

    猜你喜欢
    • 2014-09-26
    • 1970-01-01
    • 2012-10-21
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多