2017-06-15 99 views
1

輸入文件ViewOrder.dat包含無法打印到文本文件

inv1102;p1600;brush;2;26.0;Partially Full 

這是Java代碼

public void viewBackOrder() { 

    File fileViewOrder = new File("ViewOrder.dat"); 
    File fileViewBackOrder = new File("ViewBackOrder.dat"); 
    Scanner input = new Scanner(System.in); 

    String orderNo, itemNo, itemName, itemQty, itemPrice, status; 

    try { 

     BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileViewOrder))); 
     BufferedWriter bw = new BufferedWriter(new FileWriter(fileViewBackOrder)); 
     String line = null; 

     while ((line = br.readLine()) != null) { 

      String tokens[] = line.split(";"); 

      orderNo = tokens[0]; 
      itemNo = tokens[1]; 
      itemName = tokens[2]; 
      itemQty = tokens[3]; 
      itemPrice = tokens[4]; 
      status = tokens[5]; 

      System.out.println("Order No: [" + orderNo + "]" + " Item No: [" + itemNo + "]" + " Back Order No: [" + itemQty + "]\n"); 

     } 

     System.out.print("Print Back Order List to file: "); 
     String choice = input.next(); 
     if (choice.equalsIgnoreCase("y")) { 

      while ((line = br.readLine()) != null) { 

       String tokens[] = line.split(";"); 

       orderNo = tokens[0]; 
       itemNo = tokens[1]; 
       itemName = tokens[2]; 
       itemQty = tokens[3]; 
       itemPrice = tokens[4]; 
       status = tokens[5]; 


       bw.write("Order No: [" + orderNo + "]" + " Item No: [" + itemNo + "]" + " Back Order No: [" + itemQty + "]"); 
       bw.newLine(); 
       bw.flush(); 
       bw.close(); 
      } 

      System.out.println("Successful add to file!"); 

     } else if (choice.equalsIgnoreCase("n")) { 

      System.out.println("Error"); 
     } 

    } catch (Exception e) { 

     System.out.println("Error"); 
    } 

} 

有沒有什麼錯誤,因爲它似乎是我無法找出問題或做我每次運行都覆蓋它?或者我應該更改變量名稱?

回答

2

您正在使用兩次輸入BufferedReader br

首次成功將整個輸入文件打印到屏幕上。

但第二次(當您嘗試寫入時)您的代碼無法再次讀取,因爲您已達到文件末尾。

您應該關閉並重新打開它,我強烈建議看看Java try-with-resource statement

除了這個問題,我還建議只有當用戶回答「是」這個問題時才創建BufferedWriter bw(因爲如果你的用戶回答「否」,你只是創建一個無用的空文件)。