如何在Java中打开另一个目录中的文件?

6

如何打开一个不在当前目录中但在另一个目录中的文件。例如,我有一个文件夹F:/test,我的文件在F:/test/test2/doit.txt和D:/test3/doit2.txt中。

在创建File对象时,在路径参数中输入什么:

File f = new File("/test2/doit.txt");

你在发帖之前有没有先谷歌一下? - Abubakkar
可能是重复的问题:如何在Java中扫描不同目录中的文件? - Goran Jovic
请把完整的文件名放在这里。 - Bhavik Shah
4个回答

8

无论使用哪种操作系统,例如文件 demo.txt 可以通过以下方式访问:

File file = new File("/d:/user/demo.txt");

在Windows中,文件位于D:\user\
File file = new File("/usr/demo.txt");

在 *nix 或 *nux 操作系统中,文件位于 /usr/ 目录下。
同时,如果想要相对访问文件(以 Windows 为例),可以使用以下方法:
假设我当前在 D 盘的 songs 目录下:
D:/
|
|---songs/
|   |
|   |---Main.java
|
|---user/
    |
    |---demo.txt

如果代码位于Main.java中,则以下代码可以正常工作。
File file = new File("../user/demo.txt");

您在File()构造函数中没有转义斜杠。 - Bhavik Shah

5
假设您正在F:/test目录下运行程序,您应该使用以下内容:
File f = new File("./test2/doit.txt");

使用硬编码的绝对路径不是一个好主意 - 当用户的目录结构不同时,您的程序可能无法正常工作。


1
@NickJ 在被接受的回答中做了解释。如果你无法理解评论,也许你应该(做一些搜索并)提出新问题。 - Andrew Thompson
1
我已经添加了更多信息。@Andrew Thompson:假设您正在从D:/test运行程序,并且文件位置为D:/test/test2/doit.txt,则路径是正确的。 - Paweł Piecyk
@AndrewThompson:我实际上是在指示Pawel包括他的声明原因。 - Bhavik Shah

0

项目中的文件可以以以下方式打开:

       File file = new File(path);

或者

       File file = new File(./path);

path 是从项目相对路径开始计算的。

例如,当项目名为test,文件名为fileName的文件位于test项目中:

      File file = new File("fileName");

或者

      File file = new File("./fileName");

-2
请在Windows操作系统上尝试以下代码:
reader = new FileReader ("C:/Users/user/Desktop/java/test.txt"); 

好的,所以在java.io中路径需要是绝对路径而不是相对路径。谢谢。 - Tiny Jaguar
3
用这种方式表达路径的问题在于,它确保应用程序只能在Windows上运行。Java 应该是跨平台的。Linux 没有 C: 驱动器。 - NickJ
1
现在我可以读懂了,这是一个很差的答案。原帖作者应该想办法处理相对目录。此外,在回答(或问题)中不要添加问候语和签名。作为评论,它们只会产生噪音。作为问题或答案的一部分,它们真的很烦人。 - Andrew Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接