我运行以下代码,程序返回FileNotFoundException:
public void read()
{
Scanner scanner = new Scanner(new File("/project_folder_name/data.in"));
while (scanner.hasNextLine())
{
System.out.println(scanner.nextLine());
}
}
我尝试过项目根文件夹,包文件夹和任意文件夹(即/User/.../Desktop/data.in)中的 data.in 文件。我总是得到相同的结果:
示例:
//relative path (for when data.in is within project root folder)
Scanner scanner = new Scanner(new File("data.in"));
//path for when data.in is moved in package
Scanner scanner = new Scanner(
new File("/project_folder_name/source_folder_name/package_name/data.in"));
这些都不起作用。
我在Eclipse IDE中运行程序。
答案 0 :(得分:0)
我不得不使用try / catch来避免异常中断程序:
public void read()
{
try
{
Scanner scanner = new Scanner
(new File("data.in"));
while (scanner.hasNextLine())
{
System.out.println(scanner.nextLine());
}
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
在这种情况下,这也适用于:
"C:\\Users\\...\\Desktop\\data.in"
"/Users/.../Desktop/data.in"
"data.in"(if it's in the root folder)
答案 1 :(得分:0)
传递给new File()
的路径是文件系统路径。您传递的路径("/project_folder_name/data.in"
)是Eclipse路径。等效的文件系统是${YOUR_WORKSPACE_LOCATION}/project_folder_name/data.in
,其中``$ {YOUR_WORKSPACE_LOCATION}`是工作区位置的绝对文件系统路径。你如何将它纳入你的测试代码是一个很大的问题。如果您可以使用Eclipse启动程序,则可以在启动程序的配置中使用$ {resource_loc} Eclipse变量。
另一种选择是使用相对路径。当Eclips运行测试时,当前工作目录是项目的根目录。所以你可以只使用"data.in"
。或者更好的是,使用"src/test/resources/data.in"
(对于Mavenized项目)。
答案 2 :(得分:-1)
如果您使用的是Windows,则应该使用\而不是/。你也可以给出绝对路径ex。 C:\ folder \ folder \ data.in或者您可以将文件放在类路径中并执行文件(“data.in”)或相对于类路径文件(“\ folder \ data.in”)。别忘了逃避\ 2 \。
尝试将文件放在项目文件夹的根目录中,然后执行新的文件(“data.in”)。 将文件复制并粘贴到eclipse(项目文件夹)中的根文件夹
更改
Scanner scanner = new Scanner(new File("/project_folder_name/data.in"));
要
Scanner scanner = new Scanner(new File("data.in"));