【发布时间】:2016-10-04 02:15:08
【问题描述】:
相当简单的问题,我有一个带有一些文件的服务器,我们称之为serverFile.txt,我希望将它逐行发送给某个客户端。为了实现这一点,我在服务器端编写了这个简单的代码
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line = br.readLine();
while(line != null)
{
line = line + System.lineSeparator();
MMULogFileController.getOos().writeObject(line);
line = br.readLine();
System.out.println(line);
}
br.close();
MMULogFileController.getOos 是接受套接字的输出流。
它确实打印了文件serverFile.txt的所有行
我的问题出在客户端。这是相关代码 -
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
String line = (String)in.readObject();
File newLogFile = new File("newLog.txt");
PrintWriter ptofile = new PrintWriter(newLogFile.getName());
while(line != null)
{
ptofile.write(line);
try
{
line = (String) in.readObject();
}
catch(java.io.EOFException e)
{
line = null;
}
}
ptofile.close();
它会将所有行正确打印到客户端的新文件中,除了最后一行。我知道它是从服务器发送的,因为它已被打印,但在客户端它收到 null 因为它到达 EOF。有什么办法可以解决吗?
【问题讨论】:
-
您是否在完成发送文件文本后刷新或关闭 ObjectOutputStream?为什么要使用 OOS 而不是更简单的 PrintStream?