如何设置文件输入流的路径

时间:2017-06-05 11:58:11

标签: java file io

我试图使用txt文件,但我得到了这个错误" FileNotFoundException" 但它是可读的,它存在但在线FileInputStream我得到了这个错误 这是怎么回事?

        System.out.println(Files.isReadable(Paths.get("I:/Code/Coding/src/Files/" + path + ".txt")));
        System.out.println(Files.exists(Paths.get("I:/Code/Coding/src/Files/" + path + ".txt")));
        FileInputStream f1=new FileInputStream("I:/Code/Coding/src/Files/" + path + ".txt");
        reader = new ObjectInputStream(f1);


java.io.FileNotFoundException: I:\Code\Coding\src\Files\Artists.txt (The system cannot find the path specified)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at sample.Datebase.Server.readFiles(Server.java:70)
    at sample.Datebase.Server.run(Server.java:99)
    at sample.Datebase.Server.main(Server.java:54)
Exception in thread "main" java.lang.NullPointerException
    at sample.Datebase.Server.readFiles(Server.java:94)
    at sample.Datebase.Server.run(Server.java:99)
    at sample.Datebase.Server.main(Server.java:54)

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我使用File类解决了这个问题。请试试这段代码。也许你的问题会解决:

File file = new File("I:/Code/codeing/src/Files/" + path + ".txt");
reader = new ObjectInputStream(new FileInputStream(file));
Object o = reader.readObject();

答案 1 :(得分:0)

此代码段的前3行看起来没问题,理想情况下,如果Files.exists和Files.isReadable为true,则不应抛出FileNotFoundException。

但是你不能使用ObjectInputStream来读取普通的文本文件,因为它会查找某些文件头来解释序列化的java对象。

请复制粘贴异常跟踪吗?

答案 2 :(得分:0)

FileNotFoundException - 如果文件存在但无法打开以进行阅读,则还会引发FileNotFoundException异常

阅读详情FileInputStream

首先,检查该文件的权限。是否可以阅读。

  

public static boolean isReadable(Path path):如果文件返回true   存在且可读,但不保证;请注意这个结果   方法立即过时,不能保证一个   随后尝试打开文件进行阅读将成功(甚至   它将访问相同的文件)。使用时应小心   这种方法在安全敏感的应用程序中。