2016-03-24 13 views
0

Ich versuche, eine Methode aus einer anderen Klasse aufzurufen, damit sie in meinem Pufferspeicher erscheinen kann. Mein Code ist unten:BufferedWriter schreibt nicht in Java

public void Deposit(double amount) { 
    Bank bank = new Bank(); 
    ArrayList<Client> customers = bank.getCustomers(); // Gets Customer Info from Bank 

    if (amount <= 0) { 
     System.err.println("You can not deposit that"); 
     return; 
    } else { 
     checkInterest(0); // resets interest rates 
     amount = amount + amount * interest; //Applies interest to deposited amount 
     balance += amount; // Balance is == amount 

     System.out.println("You have deposited £" + amount + "Interest Rate of " + (interest * 100) + "%"); 
     System.out.println("You now have a balance of £" + balance); 
    } 

    try { 
     FileWriter ac = new FileWriter("D:\\programming\\Java\\JavaBanking\\Transactions.txt", true); 
     BufferedWriter out = new BufferedWriter(ac); 

     String s = String.format("You have deposited the following amount:%n" + "£" + String.valueOf(amount) + "%nIn the account number:%n" + 
      getAccountNumber() + "%nAt: " + LocalDateTime.now() + "%nYour current balance is: £" + balance + "%n" + toString()); 

     out.write(s); 
     //fw.write(t); 
     out.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
}  

BasicInfor- Client-Klasse `

public class Client { 
    private Object fullName; 
    private Account account; 

    public Client(String fullName, Account account) { // Passes in First Name and Account Type 
     // TODO Auto-generated constructor stub 
     this.fullName = fullName; // Creates Fields 
     this.account = account; // Adds account to Customers 
    } 
} 

public String BasicInfo() { //Return 
    return "FullName: " + fullName + "\n" + 
     account + "Sort Code :" + SortCode(); 
}  

Ich versuche, die Basisinformationen Methode aus der Klasse Client zu erhalten im Bufferwriter appeaing, aber was, dass es passiert ist, schreibt nichts, es ist nur leer, wenn ich die BasicInfo aus dem Pufferwechsler herausnehmen, dann wird alles geschrieben und in der Notiz angezeigt, aber wenn ich es in nichts einfügen erscheint in der TXT-Datei.

+1

@ 3Kings Sie nicht brauchen. –

+0

Obwohl der Puffer nichts tut, weil nur ein Schreibvorgang ausgeführt wird. –

+1

Ich würde vermuten, dass der Code einen Fehler erzeugt, den Sie vermissen. Ich würde den Code in Ihrem Debugger Schritt für Schritt durchgehen und den Inhalt von 's' überprüfen. –

Antwort

0

Bitte stellen Sie sicher, dass der von Ihnen bereitgestellte absolute Dateipfad korrekt ist. Das Problem, das Sie haben, ist, dass Java den von Ihnen verwendeten Dateipfad nicht erkennen kann.

Dateiformat ändern:

String path = "D:\\programming\\Java\\JavaBanking\\Transactions.txt"; 
path = path.replaceAll("\\", "/"); 
FileWriter ac = new FileWriter(path,true); 

Getestet habe ich Ihre BufferedWriter & FileWriter, es funktioniert.

public class Main{ 
     public static void main(String args[]) throws IOException{ 
      FileWriter ac = new FileWriter("/Users/haifzhan/Transactions.txt",true); 
      BufferedWriter out = new BufferedWriter(ac); 

      String s = String.format("You have deposited the following amount:%n" + "£" + String.valueOf(13) + "%nIn the account number:%n"+ 
        1 + "%nAt: " + LocalDateTime.now() +"%nYour current balance is: £" + 333 +"%n" + "ddd"); 
      System.out.println(s); 

      out.write(s); 
      out.close(); 
     } 
    } 

Ausgang ist:

You have deposited the following amount: 
£13 
In the account number: 
1 
At: 2016-03-24T12:38:19.822 
Your current balance is: £333 
ddd