2015-01-21 61 views
-1

我得到这个例外,当我尝试从文件读取:文件未发现后抛出IOException异常

ERROR: 
Exception in thread "main" java.io.FileNotFoundException: newfile.txt (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at java.util.Scanner.<init>(Scanner.java:611) 
    at Postal.main(Postal.java:19) 


import java.util.Scanner; 
import java.io.*; 

public class Postal { 

    public static void main(String[] args) throws Exception { 
     /*** Local Variables ***/ 
     String line; 
     Scanner filescan; 
     File file = new File("newfile.txt"); 
     filescan = new Scanner(file); 
     userInfo book = new userInfo(); 

     /*** Loop through newfile.txt ***/ 
     while (filescan.hasNext()) { 
      line = filescan.nextLine(); 
      book.addNew(line); 
     } 

     book.print(0); 
    } 

} 
+0

你得到一个运行时异常,而不是一个编译器错误。在类路径中找不到文件的原因。 – 2015-01-21 00:42:44

+0

@JunedAsan)1)是(2)否,它在当前目录中不可用* – EJP 2015-01-30 00:24:46

回答

-1

提供您想要创建文件的位置的绝对路径。并检查该用户是否有权在该处创建文件。寻找路径的一种方法是:

File f = new File("NewFile.txt"); 
if (!f.exists()) { 
    throw new FileNotFoundException("Failed to find file: " + 
     f.getAbsolutePath()); 
} 

尝试使用此方法打开文件:

File f = new File("/path-to-file/NewFile.txt"); 
+0

您不需要'exists()'检查。打开文件已经做到了。 – EJP 2015-01-30 00:25:38

+0

@EJP你应该尝试一下,看看会发生什么。我很想看到输出。 – spooky 2015-01-30 00:59:53

0

Scanner使用FileInputStream读取该文件的内容。 但它找不到该文件,因此引发异常。 您正在使用文件的相对路径,请尝试使用绝对路径。

0

用这个代替:

File file = new File(getClass().getResource("newfile.txt")); 
+0

你可以用这种方式加载文件或者用'file.exists()'处理错误。 – 2015-01-21 00:52:32

+0

它工作@ zgangwer20? – 2015-01-21 00:56:00

+0

它不会编译,因为getClass()。getResource()需要一个URL,所以不能使用一个字符串。 – zgangwer20 2015-01-21 01:59:46