javasocket文件传输未正确读取
当我收到文件时,它会将整个文件添加到“data”的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();
}
}
# 1 楼答案
整个文件进入
data[0]
的原因是因为您的整个文件小于socket.getReceiveBufferSize()
,并且您对while循环进行了一次迭代。要按行拆分,请在while循环中使用BufferedReader
并调用.readLine()
这样做可以:
注意,您需要适当地添加try捕获以及您想要的任何其他逻辑