25

我正在做:

FileReader fin = new FileReader("file:///android_asset/myFile.txt");

在 Android 项目和许多变体中。在运行时我得到一个文件未找到异常。该文件在资产文件夹中存在且正确,因此我的路径一定是错误的。

我在这里需要的绝对路径是什么?

4

6 回答 6

47
AssetFileDescriptor descriptor = getAssets().openFd("myfile.txt");
FileReader reader = new FileReader(descriptor.getFileDescriptor());

尝试将上述内容与 FileDescriptors 一起使用。似乎是我发现的收集资产路径的最简单的方法。

于 2011-01-25T03:29:18.587 回答
19
    InputStream is = getResources().getAssets().open("terms.txt");
    String textfile = convertStreamToString(is);

public static String convertStreamToString(InputStream is)
            throws IOException {
            Writer writer = new StringWriter();

            char[] buffer = new char[2048];
            try {
                Reader reader = new BufferedReader(new InputStreamReader(is,
                        "UTF-8"));
                int n;
                while ((n = reader.read(buffer)) != -1) {
                    writer.write(buffer, 0, n);
                }
            } finally {
                is.close();
            }
            String text = writer.toString();
            return text;
    }
于 2012-03-03T07:01:38.860 回答
3

你能用类似的东西吗

    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(context.getAssets().open("fileName.txt")));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
于 2011-01-25T02:13:15.393 回答
3

它没有读取它,因为资产文件夹中的所有资产都被压缩,尝试将其扩展名更改为 .mp3 然后读入,这应该会阻止它被压缩。

于 2011-11-01T16:11:24.443 回答
2

我发现如果您使用的是 Eclipse 之类的 IDE,您可能需要进行清理——或删除 bin 目录中的 API。当您进行构建时,资产似乎没有得到更新。

于 2011-10-27T12:06:43.763 回答
1
AssetManager am = context.getAssets();
InputStream fs = am.open("myFile.txt");
于 2011-02-01T13:29:33.037 回答