写入文本文件问题 Java

Writing to a text file issue Java

我正在编写一个函数,它将检查文件 CQ.txt 是否存在,如果存在,则从中读取。我一直遇到一个问题,我在 while 循环之外声明了一个 printwriter 。稍后在应用程序中,应该将问题 1:正确或问题 2:正确写入文件。

但是,事实并非如此。它创建了文本文件,但是当我检查它时,它显示为空。

这是代码,提前谢谢你:

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");
            }
        }
    }
}

您应该在 BufferedWriter 上调用 'write' 方法,然后 'close' 它。这是一个例子:

How to Write text file Java

BufferedWriter 顾名思义缓冲写入文件。对 BufferedWriter 的任何写入都将写入内存缓冲区,而不是直接写入文件。

这样做是为了提高效率并节省 CPU IO 浪费的时间。

每次调用 bufferedWriter.write 时,它会将数据附加到缓冲区,仅当缓冲区超过阈值时才将缓冲区数据写入文件,默认值或由 BufferedWriter(FileWriter,BufferSize) 构造函数提供。

建议在将所有数据写入 bufferedWriter 后刷新写入器并关闭它。

理想情况下,示例代码应该像

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

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

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

关闭并刷新后,您应该能够看到文件中的所有数据。