2016-04-21 11 views
0

Ich kodiere eine Funktion, die prüfen wird, ob die Datei CQ.txt existiert und wenn ja, lesen Sie daraus. Ich habe ein Problem, bei dem ich eine printwriter außerhalb der While-Schleife deklariert habe. Später in der Anwendung soll es Frage 1: korrekt oder Frage 2: korrekt in die Datei schreiben.Schreiben in eine Textdatei Problem Java

Aber es tut es nicht. Es erstellt die Textdatei, aber wenn ich es überprüfe, erscheint es als leer.

Hier ist der Code, ich danke Ihnen im Voraus:

package receiverhost; 

import java.io.*; 
import java.net.*; 

public class ReceiverHost { 
public static void main(String[] args) throws Exception { 

    //set up socket on port 5000 
    ServerSocket Server = new ServerSocket(5000); 

    //set up "cookie"/ text file to be written to/ read from eventually 
    Writer DB = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("CQ.txt"), "utf-8")); 

    System.out.println("TCPServer Waiting for client on port 5000"); 

    while(true){ 

     //declare string fromclient 
     String fromclient; 
     Socket connected = Server.accept(); 
     System.out.println(" The client" + " " + connected.getInetAddress() + ":" + connected.getPort() + " is connected "); 

     //read/ retrieve client output stream 
     BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connected.getInputStream())); 

      fromclient = inFromClient.readLine(); 
      if(fromclient.equals("Q1C")){ 
       //write to CQ.txt 
       DB.write("Q1: correct"); 
      } 

      if(fromclient.equals("Q2C")){ 
       //write to CQ.txt 
       DB.write("Q2: correct"); 
      } 
     } 
    } 
} 
+0

Haben Sie versucht, in einem einfachen HelloWorld-Programm in eine Datei zu schreiben? – DavidS

+0

@DavidS erste Sache, die ich getan habe, und es hat offensichtlich funktioniert xD .. –

Antwort

0

BufferedWriter wie der Name schon sagt puffert die Schreib Datei. Jegliches Schreiben in BufferedWriter wird in Speicherpuffer geschrieben, nicht direkt in die Datei.

Dies geschieht aus Effizienzgründen und um CPU-Zeit für IO zu sparen.

Jedes Mal, wenn Sie bufferedWriter.write aufrufen, hängt es die Daten an Puffer an, schreibt die Pufferdaten nur dann in Datei, wenn Puffer den Schwellenwert überschreitet, entweder Standard oder vom BufferedWriter (FileWriter, BufferSize) -Konstruktor geliefert.

Es wird empfohlen, den Writer zu leeren und zu schließen, nachdem Sie alle Daten in bufferedWriter geschrieben haben.

idealerweise ein Beispielcode würde aussehen wie

Writer DB = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("CQ.txt"), "utf-8")); 

DB.write("Dummy Data1 "); 
DB.write("Dummy Data2"); 

DB.flush(); 
DB.close(); 

nach nah und spülen Sie in der Lage sein sollten alle Ihre Daten in der Datei zu sehen.