无法读取任何文本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法读取任何文本文件相关的知识,希望对你有一定的参考价值。

首先,我想请你说我在这里很新,我也是android Studio和Java的初学者。

我的问题/疑问是: 我在Android Studio中有一个应用程序,它应该将字符串写入特定点的文本文件,并且应该在App启动时读取相同的文件。

写入文件正在工作,但没有阅读。当我手动创建文本文件并手动将其插入文件夹时,它会读取字符串。

我已经添加了权限并尝试使用LogCat查找我的错误,但我现在还没有任何线索可能出错。

变量:

File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() + "/myApp");

我的阅读功能:

String myData = "";
try {
    FileReader fileIn = new FileReader(dir + "/data.txt");
    Scanner input = new Scanner(fileIn);
    while (input.hasNextLine()) {
        String line = input.nextLine();
        myData = myData + line;
    }
    input.close();

} catch (Exception ex) {
    ex.printStackTrace();
}

我的写作功能:

try {
    File file = new File(dir, "data.txt");
    FileOutputStream f = new FileOutputStream(file);
    PrintWriter pw = new PrintWriter(f);
    pw.println("answer42");
    pw.flush();
    pw.close();
    f.close();
} catch (Exception ex) {
    ex.printStackTrace();
}
答案

请求是否需要许可?

尝试在AndroidManifest.xml文件中添加此行

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

还要在MainActivity中添加此代码,以请求Android API 23+的许可

 ActivityCompat.requestPermissions(MainActivity.this,
                new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                1);

要获得结果,请使用以下代码

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1: {

          // If request is cancelled, the result arrays are empty.
          if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.          
            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
                Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show();
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

更多信息:https://developer.android.com/training/permissions/requesting.html

以上是关于无法读取任何文本文件的主要内容,如果未能解决你的问题,请参考以下文章

无法从 onListItemClick 开始片段

如何将treeview的内容写入文本文件

无法读取,稍后在 Apache Spark 中查询文本文件

无法在对话框片段中的文本视图上设置文本

GLSL:无法从 FBO 读取纹理并使用片段着色器渲染到另一个 FBO

无法从 Flutter Web 读取 .txt 文件