Android中CSV文件的位置

3
我在安卓应用中读取.CSV文件时遇到了问题,主要是“FileNotFound”错误。最容易放置文件的地方在哪里,它的地址是什么?我已经尝试过几个不同的位置,但都没有成功。请问有人能指点我吗?
1个回答

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文件中读取信息,将其存入数据库,然后从数据库中使用它。这个应用程序将要商业化销售,所以我不认为外部存储解决方案会起作用。但还是谢谢。 - NotACleverMan
1
如果您想在应用程序中附带预定义的CSV文件,那就有点不同了。这是一个“原始”资源。您可以将文件放在res/raw中,并使用Resources.openRawResource从那里访问它。http://developer.android.com/intl/de/reference/android/content/res/Resources.html#openRawResource(int) - Charlie Collins
此外,您可以完全跳过资源部分,使用AssetManager检索/assets。最佳方法实际上取决于您要做什么(读取静态数据,读/写数据,创建数据并持久化等)。 - Charlie Collins
那是一个“原始”资源。 我尝试了这个原始资源,而且已经让它工作了。谢谢你的帮助 :) - NotACleverMan
很高兴听到你让它正常工作了,太棒了。至于“答案”,你想让我把注释添加到答案中以便它被接受,还是现在就可以(如果你认为它值得接受的话)。 - Charlie Collins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接