选择文本文件并阅读Android

时间:2015-11-13 05:34:58

标签: android

我从存储中选择了一个文本文件并获取了它的路径(FilePath),我正在尝试读取该文本文件的内容并将其放入edittext ..我正在使用下面的代码来获取文本文件数据并将其放入edittext(eTPronounce)

 File sdcard = Environment.getExternalStorageDirectory();


//Get the text filea
                File file = new File(sdcard,FilePath);

//Read text from file
                StringBuilder text = new StringBuilder();

                try {
                    BufferedReader br = new BufferedReader(new FileReader(file));
                    String line;

                    while ((line = br.readLine()) != null) {
                        text.append(line);
                        text.append('\n');
                    }
                    br.close();
                }
                catch (IOException e) {
                    //You'll need to add proper error handling here
                }

//Find the view by its i

//Set the text
           eTPronounce.setText(text);

            }
        });

如果我将FilePath(在第二行)替换为有文本文件的任何目录,它就可以工作。例如,如果我用"下载/ text.txt"替换FilePath。有用 。 我使用this链接获取FilePath

感谢

2 个答案:

答案 0 :(得分:1)

我认为你应该使用下面的构造函数

File(File dir, String name)

或者您可以使用

File(String path)

如果您要指定目录名,那么您只需要提供文件名,如第一个示例所示。否则,您可以使用第二个文件路径

答案 1 :(得分:1)

if(resultCode==RESULT_OK){
    if(data == null || data.getData == null){
       //Log.e()
      return;
    }
FilePath = getPath(data.getData(),mActivity);
setfilename.setText(FilePath);
}

    public static String getPath(Uri uri,Context ctx) {
        String res = null;
        if(null==uri){
            return res;
        }
        if (uri != null && uri.toString().startsWith("file://")) {
            return uri.toString().substring("file://".length());
        }
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = ctx.getContentResolver().query(uri, proj, null, null, null);
        if(cursor!=null){
            if(cursor.moveToFirst()){
                try {
                    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                    res = cursor.getString(column_index);
                }catch (Exception ignored){
                }finally {
                    closeCursor(cursor);
                }
            }
        }
        closeCursor(cursor);
        return res;
    }