2017-09-23 12 views
-3

私はファイルに注文書を書きます。たとえば、ファイルに注文があり、注文番号が1の場合、ユーザーが別の注文を追加して保存を押すと、注文はその日付の注文番号2として.txtファイルに保存されます。私のfileWriterは注文番号1と同じ行にファイルを書きました。私のDaoImplを見てください。ありがとう。注文番号のある.txtファイルへの書き込み方法

private void writeOrder(LocalDate date) throws OrderPersistenceException, IOException { 

    PrintWriter out; 
    try { 
     out = new PrintWriter(new FileWriter(getFilePath(date))); 
    } catch (IOException ex) { 
     throw new OrderPersistenceException("file"); 
    } 

    List<Order> orderList = new ArrayList<>(orderMap.values()); 

    for (Order currentOrderList : orderList) { 

     out.print(currentOrderList.getOrderNumber() + DELIMITER 
       + currentOrderList.getCustomerName() + DELIMITER 
       + currentOrderList.getState() + DELIMITER 
       + currentOrderList.getTaxRate() + DELIMITER 
       + currentOrderList.getProductType() + DELIMITER 
       + currentOrderList.getArea() + DELIMITER 
       + currentOrderList.getCostPerSquareFoot() + DELIMITER 
       + currentOrderList.getLaborCostPerSquareFoot() + DELIMITER 
       + currentOrderList.getMeterialCost() + DELIMITER 
       + currentOrderList.getTotalTax() + DELIMITER 
       + currentOrderList.getTotal()); 

     out.flush(); 
    } 

    out.close(); 
} 

public void saveWork(LocalDate date) throws OrderPersistenceException, IOException { 
    writeOrder(date); 

} 

@Override 
public Order addOrder(Order order) throws OrderPersistenceException { 
    long orderNumber = ordernumberIncrease(order); 
    Order newOrder = orderMap.put(orderNumber, order); 

    return newOrder; 

} 

public Long ordernumberIncrease(Order order) { 
    long orderNumber = orderNumInc++; 
    order.setOrderNumber(orderNumber); 
    return orderNumber; 
} 
+1

ようこそスタックオーバーフロー!あなたはあなたの質問に多くのコードを書いているので、私たち(そして将来の読者)にはどこに問題があるのか​​がはっきりしません。問題のコードを10行以下に減らしてください。参照:[最小限で完全で検証可能な例の作成方法](http://stackoverflow.com/help/mcve)と[小規模プログラムのデバッグ方法](https://ericlippert.com/2014/03/05)/how-to-debug-small-programs /)を実行します。 –

+0

私はそれを減らしました。うまくいけばあまりにも多くはありません。お返事ありがとうございます。 – Rnhep

答えて

0

あなたはwriteOrder方法更新する必要があります。代わりにout.printの使用out.printlnをのforループでは

を - 各順序は、新しい行から開始します。

+0

ありがとうございます。私はそれを見なかった。私はとてもバンプして、私の検索スキルを使い果たしました。問題解決!ありがとうございました場合は、 – Rnhep

+0

もう一度簡単な質問ありがとうございます。私は次の行への書き込みを続行するのではなく、プログラムの再起動後にprintwriteが既存のファイルを書き込んだ別の問題に走っています。 writeOrderメソッドにIF文があるはずですか?ありがとう – Rnhep

関連する問題