资产txt文件的Android路径

Posted

技术标签:

【中文标题】资产txt文件的Android路径【英文标题】:Android path to asset txt file 【发布时间】:2011-06-14 22:19:25 【问题描述】:

我在做:

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

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

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

【问题讨论】:

你考虑过文件名区分大小写吗? 【参考方案1】:
AssetFileDescriptor descriptor = getAssets().openFd("myfile.txt");
FileReader reader = new FileReader(descriptor.getFileDescriptor());

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

【讨论】:

@kcoppock:这里 Dalvik 抱怨“FileNotFoundException”,说文件可能被压缩了。 您确定它直接在资产文件夹中,而不是子文件夹中? @kcoppock:直接在assets文件夹里。 @SK9:我不认为这是导致你的问题的原因,但我有一个错字,应该是getFileDescriptor(),而不是getDescriptor(),但我假设你已经想到了那个出... 你能发布你的踪迹吗?根据文档,FileReader(FileDescriptor) 不能抛出 FileNotFoundException,而 openFd(String) 只会抛出 IOException。【参考方案2】:
    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;
    

【讨论】:

那行不通!文本文件是这样的: %PDF-1.5 %���� 54 0 obj 【参考方案3】:

你可以使用类似的东西

    try 
        BufferedReader br = new BufferedReader(new InputStreamReader(context.getAssets().open("fileName.txt")));
     catch (IOException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    

【讨论】:

这就是我目前正在做的事情。使用缓冲阅读器逐行阅读对我的需求来说太慢了。 然后使用 bufferedInputStream 代替 BufferedReader。但是,如果缓冲读取器/缓冲输入流正在减慢您的应用程序,我会感到惊讶,因为它们的存在就是为了加快我们对操作系统资源的 I/O 访问。 快速回复 - 谢谢。我会试试这个。逐行阅读文本文件没有帮助,我需要提前阅读,但这可能不是唯一的原因。我想知道的。【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:
AssetManager am = context.getAssets();
InputStream fs = am.open("myFile.txt");

【讨论】:

以上是关于资产txt文件的Android路径的主要内容,如果未能解决你的问题,请参考以下文章

获取资产文件夹的完整路径

Android 笔记 ------当你获得文件路劲时获取此文件的信息

Android - 获取从文件资源管理器中选择的 .txt 文件的真实路径

在proguard Android中保留资产文件夹

Android项目无法解析任何静态资产

如何在 iOs 或 Android air 项目 (AS3) 上将下载的资产保存到磁盘