客户端服务器BufferedWriter未写入。txt文件[JAVA]
Aim:服务器从客户端发送的文本文件中读取数据。服务器将此数据存储在另一个文本文件中
问题:我能够读入文本文件并将其打印到控制台,但是,当我使用BufferedWriter运行代码并打开新文本文件后,该文件为空。我不完全确定我是否错误地使用了BufferedWriter函数,或者是否遗漏了任何关键函数
代码:
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;
while (true) {
fromUser = stdIn.readLine();
if (fromUser != null) {
FileReader file = new FileReader("client-temp.txt");
BufferedReader tc = new BufferedReader(file);
BufferedWriter bw = new BufferedWriter(new FileWriter("datastore.txt"));
String line;
while ((line = tc.readLine()) != null)
{
String[] data = line.split(",");
String sensortype = data[0];
String date = data[1];
String time = data[2];
String reading = data[3];
String newdata = sensortype + date + time + reading;
System.out.println(line);
if (line != null)
{
out.write(line);
out.flush();
}
System.out.println("Data sent to file");
}
System.out.println(EmsClientID + " sending " + fromUser + " to EmsServer");
out.println(fromUser);
}
fromServer = in.readLine();
System.out.println(EmsClientID + " received " + fromServer + " from EmsServer");
}
# 1 楼答案
你的代码不完整。我会突发奇想,设想一下你的问题
加上
在代码的末尾
# 2 楼答案
你永远不会在
BufferedWriter
的实例上调用flush
或close
,事实上,你完全忽略了它。而且,你的资源管理根本不存在。如果你打开一个资源,你应该关闭它例如
有关详细信息,请参见The try-with-resources Statement
(ps:您可以复合
try-with-resource
语句,在同一try (...) {
部分中打开多个资源,但我想演示基本概念)