【问题标题】:How do I open a text file that's in my app's package?如何打开我的应用程序包中的文本文件?
【发布时间】:2013-01-11 05:00:39
【问题描述】:

使用 Eclipse、Android SDK。

我有一个文本文件,其中包含我需要提取的数据。(目前,这是一种更简单的方法,最终我需要从 URL 中抓取动态数据,但现在我有测试数据我需要在这个文本文件中)。

我创建了一个类来打开此文件,但无论我如何尝试打开它,我都会收到“找不到文件”异常。

我尝试将我的“data.txt”文件放在各种相对路径中(在我的应用程序中):
- "/AppName/"
- "/AppName/src/com/example/appname/data.txt"

我尝试过传递不同的相对路径。我尝试将文本文件放在试图打开它的 .java 类文件的同一路径中,但它仍然找不到它!我做错了什么?

【问题讨论】:

  • 你需要了解 Assets 和 /res/raw。您不应该将文本文件放入源目录。

标签: android eclipse file-io java-io


【解决方案1】:

我做错了什么?

在您的项目目录中存储此文件的位置有两个主要选项:assets/res/raw/

如果您使用assets/,您可以在您的Activity(或其他Context)上调用getAssets(),然后使用assets/ 中的相对路径调用open() 以获得InputStream在这个文件上(例如,assets/data.txt 将通过getAssets().open("data.txt") 访问)。

如果你使用res/raw/,你可以在你的Activity(或其他Context)上调用getResources(),然后调用openRawResource(),根据你的文件名传入R.raw值(例如, res/raw/data.txt 将通过 getResources().openRawResource(R.raw.data) 访问)。

【讨论】:

  • 谢谢!我现在至少可以打开文件了,我已经通过查看调试跟踪确认了它。现在我无法让我的 InputStreamReader 得到任何东西,哈哈!哎……
【解决方案2】:

使用 /res/raw 目录。我从 raw 中读取声音文件:

InputStream soundFile1 = context.getResources().openRawResource(soundOneId);

其中 context 是传递给类的活动的基本上下文。 http://developer.android.com/reference/android/content/Context.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多