无法在android中的原始文件夹中找到文件

时间:2013-12-24 15:22:29

标签: java android

我有一个文件dictionary.txt,我需要从原始文件夹中获取该文件,所以我用Google搜索并找到了这个文件:

以下是一个例子:

"android.resource:///"+getPackageName()+ "/" + R.raw.dictionary;

但它不起作用,不知道吗?

编辑:

这就是我正在做的事情

                for(String line: FileUtils.readLines(file))
                {

                    if(line.toLowerCase().equals(b.toLowerCase()))
                    {
                        valid = true;
                    }
                }

3 个答案:

答案 0 :(得分:3)

您可以使用以下方法在原始资源上获取输入流:

getResources().openRawResource(R.raw.dictionary);

编辑:

从你的编辑开始,没有理由说明为什么你需要这个文件而不仅仅是使用openRawResource(int id)方法提供的输入流......只需使用现有的java类{{ 3}}。

Scanner scanner = new Scanner(getResources().openRawResource(R.raw.dictionary));  

while(scanner.hasNextLine()){
{
     if(scanner.nextLine().toLowerCase().equals(b.toLowerCase()))
                    {
                        valid = true;
                    }
                }
}

答案 1 :(得分:2)

很遗憾,您无法直接从File文件夹创建raw对象。您需要将其复制到sdcard或应用程序缓存中。

您可以通过这种方式检索文件的InputStream

    InputStream in = getResources().openRawResource(R.raw.yourfile);

  try {
       int count = 0;
       byte[] bytes = new byte[32768];
       StringBuilder builder = new StringBuilder();
       while ( (count = is.read(bytes,0 32768) > 0) {
           builder.append(new String(bytes, 0, count);
       }

       is.close();
       reqEntity.addPart(new FormBodyPart("file", new StringBody(builder.toString())));
   } catch (IOException e) {
       e.printStackTrace();
   }

编辑:

将其复制到内部存储空间:

File file = new File(this.getFilesDir() + File.separator + "fileName.ext");
try {
        InputStream inputStream = resources.openRawResource(R.id._your_id);
        FileOutputStream fileOutputStream = new FileOutputStream(file);

        byte buf[]=new byte[1024];
        int len;
        while((len=inputStream.read(buf))>0) {
            fileOutputStream.write(buf,0,len);
        }

        fileOutputStream.close();
        inputStream.close();
    } catch (IOException e1) {}

现在您可以在任何需要的地方访问File

答案 2 :(得分:1)

将文件放在assets文件夹中,然后像这样打开

getResources().getAssets().open("dictionary.txt");