0

ファイルを受信すると、ファイル全体が「データ」の 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();
    }
}
4

1 に答える 1

2

ファイル全体が入る理由は、ファイルdata[0]全体が未満でsocket.getReceiveBufferSize()あり、while ループを 1 回反復するためです。代わりに行ごとに分割するには、 while ループでa BufferedReaderand を呼び出します。.readLine()

次のようなことができます:

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

必要なその他のロジックと同様に、try catch を適切に追加する必要があることに注意してください。

于 2013-03-29T01:37:24.233 に答える