2014-01-28 27 views
0

我嘗試代碼字符串進行排序,試圖指定一個文件對這一計劃正在從文本file.When IM輸入給我FileNotFoundExcetion IM無法理解爲什麼? 即使我試圖通過編寫代碼來獲得文件的路徑,在screenShootü可以看到這條道路是正確的,但程序還在給我錯誤無法從我的計算機上的本地目錄中加載文件,java程序

這裏泰德Screenshort 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); 
    } 

} 
+0

你在開玩笑吧?您正試圖打開「finalfile」,而不是名稱在變量'finalfile'中的文件 – Ingo

回答

1

BufferedReader reader = new BufferedReader(new FileReader("finalfile"))) 

參數爲FileReader構造是硬編碼爲「finalfile」 - 你需要使用替代變量:

BufferedReader reader = new BufferedReader(new FileReader(finalfile))) 
                 ^^^^^^^^^^^ 

您還需要第一try塊之前移動String finalfile = "";,否則就超出了範圍,當你正在創建FileReader

此外,不需要查詢操作系統並手動設置目錄路徑分隔符。如果您確實需要,請使用File.separator。否則,只需使用正斜槓 - this is working cross-platform

很高興看到您使用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); 
} 
相關問題