从android中的文本文件中读取

时间:2012-08-29 06:55:04

标签: android text-files fileinputstream

我是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());
    }

谢谢!

4 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

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

movies.txt的路径在哪里?您必须在任何存储位置将路径作为SD卡或内部存储器提供。

好像,它是sd卡

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

答案 2 :(得分:0)

通常,当您要打开文件时,请将其放入项目的res文件夹中。 如果要打开文本文件,可以将其放入res / raw目录。您的Android eclipse插件将为您生成包含文本文件句柄的Resource类。

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

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

其中“movies”是没有文件类型的文件名。

答案 3 :(得分:0)

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

请注意,如果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");
}