Как записать детали в файл, используя BufferedWriter и FileWriter в Java? - PullRequest
0 голосов
/ 06 марта 2012

У меня есть проблема, чтобы написать эти детали в файле. Я пытаюсь записать эту деталь в файл, но кое-как, как эта функция создает файл в определенном месте, но ничего не записывает в файл.

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){}
        }
    }

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

Ошибка в вашем коде заключается в том, что вы закрыли экземпляр FileWriter перед закрытием экземпляра BufferedWriter. Это сработает, если вы просто поменяете местами bw.close () и fw.close (); Ваш блок finally должен выглядеть следующим образом:

finally
{
    try
    {
       bw.close();
       fw.close();
    }
    catch(Exception e)
    {}
}
0 голосов
/ 06 марта 2012

Попробуйте позвонить

bw.flush();

перед закрытием файла.Хорошей практикой является очистка потока каждый раз, когда вы пишете значительную часть данных.В вашем случае добавьте этот вызов в 2 места: в конец тела цикла while и после bw.write("Thank You...!").

...