我让我的程序读取.txt文件,我不想使用绝对文件名,因为它取决于机器,我只想使用相对文件名。我不知道如何做到这一点。这是我正在讨论的程序的一部分:
private List<String> readFile() {
List<String> wordsList = new ArrayList<>();
try {
String fileName = "C:/Users/Phil/Documents/FourLetterWords.txt";
File fourLetterWords = new File(fileName);
Scanner in = new Scanner(fourLetterWords);
while (in.hasNextLine()) {
String line = in.nextLine();
if (line!=null && !line.isEmpty()) {
wordsList.add(line);
}
}
}
catch (FileNotFoundException ex) {
System.out.println("File not found.");
}
return wordsList ;
}
如果我要做到这一点:
"C:/FourLetterWords.txt"
然后我的捕获异常进来并说File找不到。但我真的只想用......
"FourLetterWords.txt"
答案 0 :(得分:3)
更改此
String fileName = "C:/Users/Phil/Documents/FourLetterWords.txt";
类似
File f = new File(System.getProperty("user.home"),
"Documents/FourLetterWords.txt");
将在Java支持的每个平台上获取“user.home”,然后将“Documents / FourLetterWords.txt”附加到该路径。
答案 1 :(得分:1)
你可以
getResourceAsStream().
System.getProperty("user.dir")
返回当前目录答案 2 :(得分:1)
他们说了什么,另外还有一些用于在文件夹级别上下导航的其他有用技巧:
//absolute path from where application has initialized
String target = System.getProperty("user.dir");
//drop the last folder to go down one level
target = target.substring(0, target.lastIndexOf(File.separator));
//go into another directory
target = target + File.separator + targetFolder;
//use it
return target;
答案 3 :(得分:0)
使用相对文件路径与您当前所在的路径有关。只需在此猜测,但请尝试&#34; Documents / FourLetterWords.txt&#34;。
如果可行,原因是因为您当前的目录是&#34; C:\ Users \ Phil&#34;
如果没有尝试
System.out.println("Working Directory = " +
System.getProperty("user.dir"));
然后尝试将文件移到那里以便能够使用&#34; FourLetterWords.txt&#34;。
答案 4 :(得分:0)
Java或任何编程语言有两种文件访问方案:
一个。该文件存在于项目目录中。
湾文件不在项目目录中。
a。项目目录中的文件:
文件存在捆绑或推送到项目目录中的文件夹。在这种情况下,你可以使用一些东西
String fileName = "/resourceFolder/FourLetterWords.txt";
资源文件夹是项目根文件夹的子文件。
湾文件出现在项目目录外的位置
您需要拥有一个属性集,该属性集始终具有您将拥有该文件的路径。您需要将其设置为env的一部分,以便代码始终在所有操作系统上运行。您还可以将其设置为属性文件的一部分,该文件将针对每个操作系统进行更改。
获取系统变量:{{1}}
获得财产:System.getEnv("FILE_DIR");