2012-03-06 72 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 2012-03-06 20:48:18

0

尝试关闭文件之前调用

bw.flush();

。好的做法是每次写入重要的数据时刷新数据流。在你的情况下,将这个调用添加到2个地方:在while循环体的末尾和bw.write("Thank You...!")之后。

相关问题