gpt4 book ai didi

java - ObjectOutput 写入损坏字节

转载 作者:行者123 更新时间:2023-12-01 12:47:26 25 4
gpt4 key购买 nike

所以我想要完成的是在我的 FTP 服务器上创建一个新文件,然后写入该文件。这是我的代码

try {

URL url = new URL("ftp://" + user + ":" + pass + "@127.0.0.1/myFile.txt;type=i");
URLConnection urlc = url.openConnection();

OutputStream os = urlc.getOutputStream();
OutputStream buffer = new BufferedOutputStream(os);
ObjectOutput output = new ObjectOutputStream(buffer);

//I Write Here

buffer.close();
os.close();
output.close();

} catch (Exception e) {
e.printStackTrace();
}

无论我如何写入文件

output.writeBytes("Hello World");
output.writeChars("Hello World");
output.writeUTF("Hello World");
output.writeObject("Hello World");

输出为

’ 

此外,一切正常,但我在控制台中看到了这个

java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:116)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at java.io.FilterOutputStream.flush(FilterOutputStream.java:140)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:141)
at java.io.ObjectOutputStream$BlockDataOutputStream.flush(ObjectOutputStream.java:1823)
at java.io.ObjectOutputStream.flush(ObjectOutputStream.java:719)
at java.io.ObjectOutputStream.close(ObjectOutputStream.java:740)
at test.Upload.main(Upload.java:30)

正常吗?

第 30 行是:

output.close();

最佳答案

您关闭流的顺序错误。始终从“顶部”向下关闭(在本例中,ObjectOutputStream 是“顶部”)。

当您调用 buffer.close() 时,您将关闭底层套接字。 ObjectOutputStream.close() 方法想要在关闭之前写入附加信息,但在调用 output.close() 时套接字已关闭。

关于java - ObjectOutput 写入损坏字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560183/

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