【发布时间】:2018-12-29 23:40:28
【问题描述】:
我尝试在名为 Books.txt 的 java 项目文件中写入和读取文件。 问题是我只能在 partialPath 具有文件的完整路径时才能访问该文件。
代码如下:
public <T> List<T> readFromFile(String fileName) {
private String partialPath = "\\HW3\\src\\java\\repos\\";
try {
String path = partialPath + fileName;
FileInputStream fi = new FileInputStream(path);
ObjectInputStream oi = new ObjectInputStream(fi);
// Read objects
List<T> items = (List<T>) oi.readObject();
oi.close();
fi.close();
return items;
} catch (IOException | ClassNotFoundException e) {
}
}
如果我像上面那样设置相对路径,我会找不到异常文件。
我的问题是如何以编程方式设置当前目录的完整路径?
【问题讨论】:
-
如果你想写入文件,那么它不能存在于
src- 你不应该直接引用src,因为一旦项目被导出,它就不会存在。相反,您可以尝试将文件放在当前工作目录中。您可以使用System.getProperty("user.dir")确定工作目录。问题在于,它可能会根据程序的执行位置而改变。 “更通用”的方法是使用“众所周知”的位置,例如用户的主目录。您可以使用System.getProperty("user.home")来查找,但每个操作系统都有自己的规则 -
当前目录只是“.”。问题是您的项目的工作目录在哪里,这在一定程度上取决于您使用的 IDE。这可能不是 src 而是一个文件夹。如果您从命令行运行程序,它将与您启动程序的目录相同。
-
@Michael "我可以把文件放在项目目录中吗?" - 你可以把文件放在任何喜欢的地方,问题是试图再次找到它们。要使这种事情发挥作用,您需要解决各种限制和问题。这也是一个常见的问题,不只是在 Java 中,它有一个相对简单的解决方案 - 使用“众所周知的位置”来存储文件,假设您想要对它们进行读/写访问
-
这是错误的方法。多年来,操作系统制造商(和 Oracle)一直在说不要将应用程序数据存储在应用程序的目录中。检查this answer 以获得更好的方法。哦,我看到@MadProgrammer 已经击败了我:“使用“众所周知的位置”来存储文件”。
标签: java