簡體   English   中英

是否可以使用相同的FileWriter文件並通過多種方法對其進行寫入?

[英]Is is possible use the same FileWriter file and write to it from multiple methods?

我正在從用戶那里獲取輸入文件和輸出文件,並嘗試從main方法和towerOfHanoiMoves方法寫入輸出文件。 我試圖將輸出變量作為參數傳遞給towerOfHanoiMoves方法,但始終出現錯誤。

我收到的錯誤是:

 Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unhandled exception type IOException 
   at TowerofHanoiRecursive.towerOfHanoiMoves(TowerofHanoiRecursive.java:72)
   at TowerofHanoiRecursive.main(TowerofHanoiRecursive.java:41)

有沒有一種方法可以使我從兩個單獨的方法寫入同一輸出文件?

我嘗試使用PrintWriter,但這給了我同樣的事情。 我也嘗試過在towerOfHanoiMoves方法中刷新並關閉outStream,但這也不起作用。 我還導入了所有必需的java.io文件,但是由於某些原因,它們沒有顯示在這里。

public class TowerofHanoiRecursive{


  public static void main(String[] args) throws IOException, EmptyFile,                                      
          FileNotFoundException{
    int n; //number of disks

    String rodLeft = "A", rodRight = "C", rodMiddle = "B";
            FileReader inputStream = null;
            FileWriter outputStream = null;
            BufferedReader str = null;  

   try {
        outputStream = new FileWriter(args[1]); // output file
        inputStream = new FileReader(args[0]);  // input file
            str = new BufferedReader(inputStream);  
            String nextLine; 
            File newFile = new File(args[0]);

     if (newFile.length()==0) { //Tests if input file is empty
       //if file is empty, the EmptyFile exception will be thrown
       throw new EmptyFile("Input file is empty");

       }

     while ((nextLine = str.readLine()) != null) {
        outputStream.write("----------------------------------------"
                + "------------------------\n");
        outputStream.write("Number of Disks in Starting Tower = " 
                + nextLine);
         n = Integer.parseInt(nextLine);

         towerOfHanoiMoves(n, rodLeft, rodRight, rodMiddle, 
              outputStream);

     }

   }catch (FileNotFoundException e) {
        outputStream.write("Input file not found.);
        outputStream.flush(); 
        if (outputStream != null) outputStream.close();

   }catch (EmptyFile e) {                               
        outputStream.write(e.getMessage());
        outputStream.flush();   
        if (inputStream != null) inputStream.close();
        if (outputStream != null) outputStream.close();
        str.close();
   } finally { 
        outputStream.write("");
        outputStream.write("\n\nSuccess!);
        outputStream.flush();

        if (inputStream != null) inputStream.close();
        if (outputStream != null) outputStream.close();
        str.close();
    }

}


  public static void towerOfHanoiMoves(int n, String leftRod, String 
            rightRod, String MidRod, FileWriter outStream) {

    if (n == 1) {
       outStream.write("Move disk 1 from ....");
    }
  }
}

特殊的錯誤是write()方法可以引發IOException 結果,必須捕獲或聲明該Exception。 因此,可以修改towerOfHannoiMoves引發IOException

    public static void towerOfHanoiMoves(int n,
        String leftRod,
        String rightRod,
        String MidRod,
        FileWriter outStream)
     throws IOException

另一個注意事項:那里發布的代碼缺少一些引號。 例如,

outputStream.write("Input file not found.);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM