在android中从手机读取文本文件

Read text file from phone in android

提问人:a awasi 提问时间:11/20/2021 最后编辑:Vojin Purića awasi 更新时间:11/22/2021 访问量:107

问:

我正在尝试访问android中的文本文件,但是由于手机中存在文本文件,因此出现错误。open failed: ENOENT (No such file or directory)

        if (txt_file.endsWith(".txt")) {
              try {
                    Log.e("TAG", "path " + txt_file);
                    InputStream is = new FileInputStream(txt_file);
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    byte[] b = new byte[1024];
                    int bytesRead;
                    while ((bytesRead = is.read(b)) != -1) {
                         bos.write(b, 0, bytesRead);
                    }
                    byte[] bytes = bos.toByteArray();
                    byte[] dataToSave = Base64.encode(bytes, Base64.DEFAULT);

                    } catch (IOException e) {
                                e.printStackTrace();
                    }
          }

我已经记录了之前的记录,它返回了文本文件的正确路径。txt_fileInputStream

Java Android IO 文本文件

评论

0赞 RVK 11/20/2021
尝试使用 Scanner 而不是 InputStream 来读取文件
0赞 a awasi 11/20/2021
您能否再详细说明一下,因为没有使用扫描仪的读取方法,因此存在错误。is.read(b)
0赞 blackapps 11/20/2021
Log.e("TAG", "path " + txt_file);请告诉我们使用的路径。
0赞 blackapps 11/20/2021
您应该添加:if ( !new File(txt_file).exists() return;
0赞 blackapps 11/20/2021
您还应该添加:if ( !new File(txt_file).canRead() return;

答:

0赞 RVK 11/20/2021 #1

试试这个

 fun readFile(file: File?): String {
        var fileContent: String = ""
        try {
            val scan = Scanner(file)

            while (scan.hasNextLine()) {
                fileContent = scan.nextLine()
            }
            scan.close()
        } catch (e: IOException) {
            e.printStackTrace()
            fileContent = ""
        }
        return fileContent
    }