2012-04-08 44 views
3

我只是在用java读取输入文件,直到我陷入了最基本的步骤......找到输入文件!输入文件无法找到

的input.txt的文件在同一目录作为我的类文件正在调用它尚未月食仍然给我一个错误,它不能被发现:

主‘的java.lang“在线程异常’。错误:未解决的问题编译: 未处理的异常类型FileNotFoundException异常”

我的代码:

package pa; 
import java.util.Scanner; 

public class Project { 
public static void main(String[] args) { 
    java.io.File file = new java.io.File("input.txt"); 
    System.out.println(file.getAbsolutePath()); 
    Scanner input = new Scanner(file); 
} 
} 

input.txt中是在同一个包,相同的文件夹和一切。我很困惑:(

+0

尝试创建一个文件,看看新创建的文件在同一文件夹制作。当你给路径如“input.txt”时,java编译器产生的是$ PWD/input.txt,其中$ PWD是执行类文件的路径。 – Shivam 2012-04-08 23:46:05

回答

4

我不知道月食做,但在NetBeans路径不从包(文件夹)开始你的类是,但是你的项目的根文件夹。要在netbeans中找到该文件,您必须将new File("src/pa/input.txt")

+0

这就是问题所在!谢谢! – 2012-04-08 23:28:41

+1

请注意,应该使用“File.separator”来代替'/'和'\',以提高可移植性。 – MByD 2012-04-08 23:30:04

+0

没问题。另外,我建议使用FileInputStream而不是扫描仪。 – MarioDS 2012-04-08 23:30:42

1

尝试使用文件的绝对路径,例如:

java.io.File file = new java.io.File("C:\\My Documents\\User\\input.txt"); 

此外,声明main()方法是这样的:

public static void main(String[] args) throws FileNotFoundException { 

通常你会想以捕捉和处理异常,但现在只是抛出它。

1

当使用eclipse时,工作目录是项目目录,而不是类的目录

你可以得到的工作目录下面的方法:

File f = new File("."); 
System.out.println(f.getAbsolutePath()); 
0

查看正在生成类文件的文件夹。如果input.txt文件不在该文件夹中,请将其放在那里,然后再次运行您的代码。

+0

这是在同一个文件夹,所以我不知道为什么会发生这种情况。我结束了一个新的项目,只是离开了类的默认包名,它的工作......为什么这有效?我永远不会知道。输入始终与类相同的文件夹中,所以我不知道在与java文件相同的文件夹中发生了什么 – 2012-04-08 23:28:03

+0

。你是否检查了.class文件生成的文件夹? – sul 2012-04-08 23:29:19

1

错误“未处理的异常类型FileNotFoundException”可以通过main()方法中的异常处理来解决。在您的代码中添加以下命令。

public static void main(String[] args) throws FileNotFoundException 

运行程序,你应该得到input.txt文件的位置。

您可以了解更多关于异常处理here.

干杯