【问题标题】:Locations of CSV files in AndroidAndroid 中 CSV 文件的位置
【发布时间】:2010-10-03 19:25:10
【问题描述】:

我在从 Android 应用程序中的 .CSV 文件读取数据时遇到问题。主要是“FileNotFound”错误。哪里是最容易放置文件的地方,它的地址是什么。我一直在玩弄几个不同的地方,但都没有运气。

谁能指出我正确的方向?

【问题讨论】:

    标签: android csv location


    【解决方案1】:

    您可能希望它在可移动存储(SD 卡)上。首先,您需要检查存储是否可用,然后是读/写。

    文档对此有一些注释:http://developer.android.com/intl/de/guide/topics/data/data-storage.html#filesExternal (注意那里的 API 级别 8 的东西,例如 getExternalFilesDir,我还没有使用过,但看起来很方便,如果你能保证 >=8。)

    您可以通过以下方式检查存储是否存在:

    public boolean isExternalStorageAvail() {
          return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
       }
    

    如果它不存在,则显示 Toast(至少)或以其他方式让用户知道。

    然后像这样读:

    File f = new File(Environment.getExternalStorageDirectory() + "/mycsvlocation/myfile.csv");
    

    然后你可以使用常规的File方法来检查它是否存在,它是否可读等,然后使用它。

    另请注意,文档建议您使用 SD 卡上的位置,例如“Android/data//files”,这是一个合理的建议,但许多应用只使用“/appname/”等。

    还有一件事,当然,您只需安装 SD 卡并创建该结构并复制文件即可将文件放在那里。或者,您也可以通过编程方式(从您的应用程序)执行此操作,但听起来您已经拥有该文件,并且只想阅读它。

    【讨论】:

    • 感谢您的回答,但我认为我无法从 SD 卡中读取它。我只想从 CSV 文件中读取,将信息放入数据库,然后从那里使用它。这个应用程序将在商业上销售,所以我认为外部存储解决方案不会起作用。不过还是谢谢。 (我之所以编辑,是因为我说的是 CSV 时的文本文件)
    • 好吧,如果您想将预定义的 CSV 文件 一起发送到您的应用程序中,那就有点不同了。那是一种“原始”资源。您可以将文件放在 res/raw 中,然后使用 Resources.openRawResource 从那里访问它。 developer.android.com/intl/de/reference/android/content/res/…
    • 另外,您可以完全跳过资源的事情并使用 /assets,可以使用 AssetManager 检索。最好的方法实际上取决于您要做什么(读取静态数据、读取/写入数据、创建数据和持久化等)。
    • 这是一个'原始'资源。" 我尝试了原始资源,我已经得到它的工作。谢谢你的帮助:)
    • 很高兴听到你让它工作了,很酷。至于“答案”,您希望我将 cmets 添加到答案中以便可以接受,还是按原样工作(如果您认为值得,您必须接受它)。
    猜你喜欢
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多