Java错误ENOENT(没有此类文件或目录)

时间:2020-02-25 17:00:36

标签: java sqlite kotlin

我正在开发一个应用程序,该应用程序允许我使用打开的文件管理器在设备内搜索文件,然后将数据保存在Sqlite中。首先,我有一个寻找.txt文件的按钮。

Local.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {

                        buscarArchivo = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                        buscarArchivo.addCategory(Intent.CATEGORY_OPENABLE);
                        buscarArchivo.setType("text/*");
                        startActivityForResult(buscarArchivo, 10);
                    }
                });

我获取文件的路径,然后将其发送到负责定位文件和存储数据的readFile()方法

     Uri uri = data.getData();
     String path = uri.getPath();
     path = path.substring(path.indexOf(":") + 1);

     String[] texto = leerArchivo(path);

接收路径并负责读取文件的方法

private String[] leerArchivo(String path) throws FileNotFoundException {

        InputStream inputStream = new FileInputStream(Environment.getExternalStorageDirectory() + "/" + path);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

        try {
            int i = inputStream.read();
            while (i != -1) {
                byteArrayOutputStream.write(i);
                i = inputStream.read();
            }
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return byteArrayOutputStream.toString().split("\n");
    }

但是在运行应用程序并选择文件时,它会产生以下错误

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Probando.txt: open failed: ENOENT (No such file or directory)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)

1 个答案:

答案 0 :(得分:0)

您检查路径是否正确吗?也许这行

path = path.substring(path.indexOf(":") + 1);

不会重新引用实际路径。尝试直接使用绝对路径,以检查错误是否仍然存在。