写入文本文件问题 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();
关闭并刷新后,您应该能够看到文件中的所有数据。
我正在编写一个函数,它将检查文件 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();
关闭并刷新后,您应该能够看到文件中的所有数据。