gpt4 book ai didi

java - 两个输出流?

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:00 25 4
gpt4 key购买 nike

我有以下代码,我试图创建两种不同类型的输出流。这似乎不起作用。创建两个输出流的正确方法是什么?具体来说,一个数据输出流和一个对象输出流?

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”语句。

如果我保留两个输出流,则消息永远不会到达服务器。

最佳答案

解决方案是将两个“writeUTF”语句移至第二个 try block 上方。

connect();

try (DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream())) {
outputStream.writeUTF("saveFile");
outputStream.writeUTF(serverName);

try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream)) {

File fileToSave = new File(localName);
byte[] fileContent = Files.readAllBytes(fileToSave.toPath());

objectOutputStream.writeObject(fileContent);

return true;
}
} catch (IOException e) {
return false;
} finally {
disconnect();
}

现在代码可以正确执行了。

关于java - 两个输出流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48411387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com