![](/img/trans.png)
[英]Making my program into a java file that can be used on other computers
[英]unable to load file from my computers local directory to java program
我試圖編寫代碼來對字符串進行排序,從文本文件中獲取輸入。當我試圖為此程序指定文件時,這給了我FileNotFoundExcetion我無法理解為什么? 即使我試圖通過為此編寫代碼來獲取文件路徑,在screenShoot中也可以看到該路徑正確,但是程序仍然給我錯誤
這是屏幕短https://app.box.com/s/qytu1d9xlm0vcb6atz42
這是我的代碼
public static void main(String[] args) throws FileNotFoundException, IOException {
ArrayList<String> row1 = new ArrayList<>();
FileWriter writer;
try {
String filename = "1.txt";
String finalfile = "";
String workingDir = System.getProperty("user.dir");
String your_os = System.getProperty("os.name").toLowerCase();
if (your_os.indexOf("win") >= 0) {
finalfile = workingDir + "\\" + filename;
} else if (your_os.indexOf("nix") >= 0 || your_os.indexOf("nux") >= 0) {
finalfile = workingDir + "/" + filename;
} else {
finalfile = workingDir + "{others}" + filename;
}
System.out.println("Final filepath : " + finalfile);
File file = new File(finalfile);
if (file.createNewFile()) {
System.out.println("Done");
} else {
System.out.println("File already exists!");
}
} catch (IOException e) {
e.printStackTrace();
}
try (BufferedReader reader = new BufferedReader(new FileReader("finalfile"))) {
String s;
while ((s = reader.readLine()) != null) {
row1.add(s);
}
Collections.sort(row1);
writer = new FileWriter("output.txt");
for (String s1 : row1) {
writer.write(s1 + "\n");
}
reader.close();
writer.close();
} catch (Exception e) {
System.out.print("Error : " + e);
}
}
在
BufferedReader reader = new BufferedReader(new FileReader("finalfile")))
FileReader
構造函數的參數硬編碼為“ finalfile”-您需要使用變量:
BufferedReader reader = new BufferedReader(new FileReader(finalfile)))
^^^^^^^^^^^
您還需要移動String finalfile = "";
在第一個try
塊之前,否則在創建FileReader
時超出范圍。
此外,也無需查詢操作系統並手動設置目錄路徑分隔符。 如果確實需要,請使用File.separator
。 否則,只需使用正斜杠- 這可以跨平台工作 。
很高興看到您正在使用try-with-resources
但是,您應該這樣做。 只需在try
語句中創建所有必需的資源,然后就無需顯式關閉它們:
try (BufferedReader reader = new BufferedReader(new FileReader(finalfile));
FileWriter writer = new FileWriter("output.txt")) {
...
// reader and writer will be auto-closed
} catch (IOException e) {
System.out.print("Error : " + e);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.