Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java工作区和文件路径_Java_File_Relative Path_Absolute Path - Fatal编程技术网

Java工作区和文件路径

Java工作区和文件路径,java,file,relative-path,absolute-path,Java,File,Relative Path,Absolute Path,我有一个很容易解决的问题。 我的项目中有一个文件夹,希望使用相对路径获取该文件夹: new File("/folder") 这给了我FileNotFoundException 如果我试着这样做 new File("d:/workspace/project/folder") 它起作用了 我怀疑它不起作用,因为: 新文件(“”)。getAbsolutePath()返回:D:\eclipse 所以不是工作区的路径 我是做错了什么还是需要在eclipse中更改一些设置你能试试吗 File file

我有一个很容易解决的问题。 我的项目中有一个文件夹,希望使用相对路径获取该文件夹:

new File("/folder")
这给了我
FileNotFoundException

如果我试着这样做

new File("d:/workspace/project/folder")
它起作用了

我怀疑它不起作用,因为:
新文件(“”)。getAbsolutePath()
返回:
D:\eclipse
所以不是工作区的路径

我是做错了什么还是需要在eclipse中更改一些设置你能试试吗

File file = new File("folder");
String path = file.getAbsolutePath();
FileInputStream fis = new FileInputStream(path);

在运行配置中,您可以指定启动的工作目录。这可能在不同的日食中有所不同,但对我来说:

Run->Run Cofigurations ...
Select Java Application, right Click New
Environment Tab gives you a chance to specify the working directory
    Select Other, and then Workspace ... to specify a project in your workspace

D:\eclipse
是项目的根文件夹。如果在同一工作区的
D:\java
中创建另一个项目,
新文件(“”)。getAbsolutePath()
将返回
D:\java
,因此这与工作区的路径无关

如果您想在项目中使用文件夹,请使用
,例如:

System.out.println(new File(".\\test").getAbsolutePath());
不是相对路径,而是绝对路径。 如果要访问相对路径,请使用

new File("folder")


Don指出您使用的是绝对路径。这就是问题所在

默认情况下,Eclipse中的工作目录是您执行的程序所在的项目路径。

通过显示以下属性,您始终可以知道工作目录:

System.out.println(System.getProperty("user.dir"));

就像djna建议的那样,我在Run Cofigurations中找到了答案,但不是在Environment选项卡中,而是在Arguments选项卡中。有一个工作目录部分,其中设置了d:\eclipse,需要将其设置为${workspace\u loc:myproject}

您可能希望程序将工作区位置作为输入。在Eclipse中,您可以为java程序设置一个运行目标,并使用Eclipse预定义变量${workspace_loc}在中传递工作区的位置。Eclipse主菜单->运行->运行配置…新文件(“文件夹”)给我D:\Eclipse\folder,新文件(“文件夹”)给我D:\Eclipse\。\folder这就是为什么您的D:\Eclipse似乎是您的工作文件夹。试着像djna告诉你的那样设置eclipse。但新文件(“/folder”)应生成C:\folder
new File("./folder")
System.out.println(System.getProperty("user.dir"));