gpt4 book ai didi

java - 套接字文件传输无法正确读取

转载 作者:行者123 更新时间:2023-12-02 07:09:32 24 4
gpt4 key购买 nike

当我收到文件时,它将整个文件添加到“数据”的 0 索引中。我该如何做到这一点,以便接收到的文件的每一行都进入一个新索引,基本上像我想做的那样添加。

public Downloader(Socket socket) {
List<String> data = new ArrayList<String>();
try {
InputStream input = socket.getInputStream();
byte[] buffer = new byte[socket.getReceiveBufferSize()];
int bytesReceived = 0;
while ((bytesReceived = input.read(buffer)) > 0) {
String line = new String(buffer, 0, bytesReceived);
if (line.trim().length() > 0) {
data.add(line);
}
}
Data.rawData = data;
input.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}

最佳答案

整个文件进入 data[0] 的原因是因为您的整个文件小于 socket.getReceiveBufferSize() 并且您对 while 进行了一次迭代环形。要按行拆分,请使用 BufferedReader 并在 while 循环中调用 .readLine()

像这样的事情会做:

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = null;
while (line = input.readLine()) != null) {
data.add(line);
}

请注意,您需要适当添加 try catch 以及您想要的任何其他逻辑。

关于java - 套接字文件传输无法正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15695902/

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