选择文本文件并读取Android

3

我从存储中选择了一个文本文件并获取其路径 (FilePath),现在我想读取该文本文件的内容并将其放入编辑框中 (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 替换为任何包含文本文件的目录,它都可以工作。例如,如果我将 FilePath 替换为“Download/text.txt”,它就可以工作了。 我使用 this 链接来获取 FilePath。
谢谢。

完整代码请参考:http://jpst.it/D5an - Mrad Mrad
你是否添加了使用权限? - tiny sunlight
如果它正在读取文件,那么问题是什么,我认为您应该先检查文件的存在,然后再尝试读取它。 - Zubair Akber
我使用了权限。 - Mrad Mrad
尝试一下我的代码 getData(),它会返回一个 URI。 - tiny sunlight
2个回答

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;
    }

感谢您的帮助! - Mrad Mrad

1
我认为你应该使用以下构造函数。
File(File dir, String name)

或者您可以使用。
File(String path)

如果您只指定目录名称,则只需要按照第一个示例中显示的文件名提供文件名。否则,您可以使用完整的文件路径来使用第二个示例。

那我应该用这个替换: File file = new File(String,FilePath); 而不是: File file = new File(sdcard,FilePath); - Mrad Mrad
不要使用 new File(FilePath)。我假设 FilePath 是文件的完整路径。 - Ajit Pratap Singh
抱抱你,我爱你,谢谢。 - Mrad Mrad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接