2012-03-06 9 views
0

ファイルにこれらの詳細を書き込む際に問題があります。 この詳細をファイルに書き込もうとしていますが、この関数が特定の場所にファイルを作成する方法はありますが、ファイルに何も書き込まない方法もあります。JavaでBufferedWriterとFileWriterを使用してファイルに詳細を書き込む方法は?

public void writeBillToFile(double amount , double billingAmount,double taxAmount, 
            double discount ,double transactionID , double billingNumber , 
            int customerID , String tableNumber ,ArrayList listObject ) 
    { 
     FileWriter fw=null ; 
     BufferedWriter bw =null; 
     Date d=new Date();   
     long currentTimestamp=d.getTime(); 
     try{ 

      fw = new FileWriter("D:/study/ADVANCE_JAVA/PrOgRaMs/WEB_APPS/00_COS-THE MEGA PROJECT/COS_March_03/GeneratedBill/bill"+currentTimestamp+".txt" , true);   
      bw= new BufferedWriter(fw); 

      System.out.println("Date and Time :: "+d.toString() +"\t Bill No :: "+billingNumber+"\t Transaction ID :: "+transactionID+"\n"); 
      bw.write("Date and Time :: "+d.toString() +" Bill No::"+billingNumber+" Transaction ID::"+transactionID); 
      bw.newLine(); 
      Iterator iteratorObject= listObject.iterator(); 
      while(iteratorObject.hasNext())   
      {   
       ItemInSessionModel itemObject = (ItemInSessionModel)iteratorObject.next(); 
       bw.write(itemObject.getItemName()+" "+itemObject.getItemQty()+"  "+itemObject.getItemRate()+"  "+(itemObject.getItemRate()*itemObject.getItemQty())); 
       bw.newLine(); 
      } 

      bw.write("Total Amount ::"+amount); 
      bw.newLine(); 
      bw.write("Discount  ::"+discount); 
      bw.newLine(); 
      bw.write("TAX   ::"+taxAmount); 
      bw.newLine(); 
      bw.write("Bill Amount ::"+billingAmount); 
      bw.newLine(); 
      bw.write("Thank You...!"); 
      System.out.println("Successfully Writen in File...!"); 
     }catch(Exception e) 
     { 
      System.out.println("Exception in FILE IO :: "+e); 
     } 
     finally 
     { 
      try{ 
      fw.close(); 
      bw.close(); 
      }catch(Exception e){} 
     } 
    } 

答えて

0

コードの誤りは、BufferedWriterのインスタンスを閉じる前にFileWriterのインスタンスを閉じたことです。単にbw.close()とfw.close()の位置を入れ替えるだけで動作します。 finallyブロックは次のようになります。

finally 
{ 
    try 
    { 
     bw.close(); 
     fw.close(); 
    } 
    catch(Exception e) 
    {} 
} 
+0

同じファイルを印刷するためのコードを書くのを手伝ってもらえますか? 私はOracleの2DPrintingチュートリアルを終えましたが、私が生成したのと同じtxtファイルを印刷したいと思います。あなたも同じことについて私を助けることができますか? – CyberWorm

0

は、ファイルを閉じる前に

bw.flush();

を呼び出すようにしてください。重要なデータを書き込むたびにストリームをフラッシュすることをお勧めします。あなたのケースでは、この呼び出しを2つの場所に追加します:whileループ本体の末尾とbw.write("Thank You...!")の後。

関連する問題