【发布时间】:2018-07-02 20:14:42
【问题描述】:
我有以下代码,我试图在其中创建两种不同类型的输出流。这似乎不起作用。创建两个输出流的正确方法是什么?具体来说,一个dataoutputstream和一个objectoutputstream?
connect();
try (DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream())) {
try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream)) {
outputStream.writeUTF("saveFile");
outputStream.writeUTF(serverName);
File fileToSave = new File(localName);
byte[] fileContent = Files.readAllBytes(fileToSave.toPath());
objectOutputStream.writeObject(fileContent);
return true;
}
} catch (IOException e) {
return false;
} finally {
disconnect();
}
在进行了一些调试之后,输出流似乎无法正常工作。如果我只有两者之一,两个“writeUTF”语句将执行。
如果我保留两个输出流,则消息永远不会到达服务器。
【问题讨论】:
-
请定义“似乎不起作用”。
-
抱歉,更新主帖
-
你有什么理由不使用这样的try语句:try (DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream()); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream)) {跨度>
-
我建议在其中添加一些日志记录语句,看看它卡在哪里。
-
另外,写出你的异常堆栈跟踪。