【问题标题】:Access resource files in Android在 Android 中访问资源文件
【发布时间】:2011-05-04 03:56:39
【问题描述】:

我的 /res/raw/ 文件夹 (/res/raw/textfile.txt) 中有一个资源文件,我正在尝试从我的 android 应用程序中读取该文件以进行处理。

public static void main(String[] args) {

    File file = new File("res/raw/textfile.txt");

    FileInputStream fis = null;
    BufferedInputStream bis = null;
    DataInputStream dis = null;

    try {
      fis = new FileInputStream(file);
      bis = new BufferedInputStream(fis);
      dis = new DataInputStream(bis);

      while (dis.available() != 0) {
              // Do something with file
          Log.d("GAME", dis.readLine()); 
      }

      fis.close();
      bis.close();
      dis.close();

    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

我尝试了不同的路径语法,但总是得到 java.io.FileNotFoundException 错误。如何访问 /res/raw/textfile.txt 进行处理? File file = new File("res/raw/textfile.txt");是Android中的错误方法吗?


* 答案:*

// Call the LoadText method and pass it the resourceId
LoadText(R.raw.textfile);

public void LoadText(int resourceId) {
    // The InputStream opens the resourceId and sends it to the buffer
    InputStream is = this.getResources().openRawResource(resourceId);
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String readLine = null;

    try {
        // While the BufferedReader readLine is not null 
        while ((readLine = br.readLine()) != null) {
        Log.d("TEXT", readLine);
    }

    // Close the InputStream and BufferedReader
    is.close();
    br.close();

    } catch (IOException e) {
        e.printStackTrace();
    }
}

【问题讨论】:

标签: java android file resources


【解决方案1】:

如果您在 Activity/Widget 调用中在 res/raw/textfile.txt 中有一个文件:

getResources().openRawResource(...) 返回一个InputStream

点实际上应该是在 R.raw 中找到的整数...对应于您的文件名,可能是 R.raw.textfile(通常是不带扩展名的文件名)

new BufferedInputStream(getResources().openRawResource(...));然后将文件内容作为流读取

【讨论】:

  • 我试过了:File file = new File(R.raw.textfile); - 如果可以的话,我会尝试使用 getResources().OpenRawResource(R.raw.textfile) 并把它交给 File。
  • 无论我如何使用“getResources().openRawResource(R.raw.textfile)”,eclipse 总是给出错误“MyClass 类型的方法 getResources() 未定义”。
  • getResources() 是 Context 类的方法。您只能获取与上下文相关的资源。
猜你喜欢
  • 2011-11-05
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
相关资源
最近更新 更多