【问题标题】:read from text file in android从android中的文本文件中读取
【发布时间】:2012-08-29 06:55:04
【问题描述】:

我是 android 开发的新手,我正在尝试创建一个简单的应用程序,它从文本文件中读取一些数据并将其显示在 ListView 中。问题是我的读者没有找到我的文件。我已经调试了我的应用程序,这就是我得出的结论。那么,文本文件必须放在哪里才能让读者找到它呢? 下面是一些代码:

     try
    {
          FileInputStream fstream = new FileInputStream("movies.txt");
          DataInputStream in = new DataInputStream(fstream);
          BufferedReader br = new BufferedReader(new InputStreamReader(in));

          String strLine;

          while ((strLine = br.readLine()) != null)
          {
              filme.add(strLine);
              Log.d(LOG_TAG,"movie name:" + strLine);
          }
          in.close();
    }
    catch (Exception e)
    {
                System.err.println("Error: " + e.getMessage());
    }

谢谢!

【问题讨论】:

标签: android text-files fileinputstream


【解决方案1】:

将名为movies.txt的文件放在res/raw中,然后使用如下代码

String displayText = "";
try {
InputStream fileStream = getResources().openRawResource(
                    R.raw.movies);
int fileLen = fileStream.available();
// Read the entire resource into a local byte buffer.
byte[] fileBuffer = new byte[fileLen];
fileStream.read(fileBuffer);
fileStream.close();
displayText = new String(fileBuffer);
} catch (IOException e) {
  // exception handling
}

【讨论】:

  • 好的,我已经在 res 中创建了我的原始文件夹,我已经检查过我没有任何 android.R 导入,但现在我在以下行中收到此错误:InputStream fileStream = getResources().openRawResource(R.raw.movi​​es);错误:原始无法解析或不是归档。
  • 添加后,该文件应显示在 eclipse 包资源管理器中。如有必要,清理项目一次。它应该自动创建 R 对象。因此,您应该在 R.raw 中获取它,就像在 R.drawable 中提供任何图像一样
【解决方案2】:
FileInputStream fstream = new FileInputStream("movies.txt");

movies.txt 的路径在哪里?您必须将路径指定为 sd 卡或内部存储,无论您存储在哪里。

好像在sd卡里

 FileInputStream fstream = new FileInputStream("/sdcard/movies.txt");

【讨论】:

  • 你使用 \ 而不是 / 如果他使用你的答案,他会得到一个错误。
【解决方案3】:

通常当你想打开一个文件时,你把它放到你项目的 res 文件夹中。 当你想打开一个文本文件时,你可以把它放到 res/raw 目录下。您的 Android eclipse 插件将为您生成一个包含文本文件句柄的资源类。

要访问您的文件,您可以在您的活动中使用它:

InputStream ins = getResources().openRawResource(R.raw.movies);

其中“movies”是您的文件名,不包括文件类型。

【讨论】:

    【解决方案4】:

    如果您将文件存储在 SD 卡上,那么您可以使用 Environment.getExternalStorageDirectory() 获取 SD 卡的根目录。

    请注意,例如,如果 SD 卡已安装到计算机上,您可能无法访问它。

    您可以像这样检查外部存储的状态:

    boolean externalStorageAvailable = false;
    boolean externalStorageWriteable = false;    
    
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        externalStorageAvailable = mExternalStorageWriteable = true;
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        externalStorageAvailable = true;
        externalStorageWriteable = false;
    } else {
        externalStorageAvailable = mExternalStorageWriteable = false;
    }
    
    if(externalStorageAvailable && externalStorageWriteable){
        File sdRoot = Environment.getExternalStorageDirectory();
        File myFile = new File(sdRoot, "path/to/my/file.txt");
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 1970-01-01
      • 2012-06-27
      • 2021-12-30
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多