我必须解码包含文件片段的套接字传输:
data %filekey% [3:%piece3% 5:%piece5% 7:%piece7% 8:%piece8% 9:%piece9%]
%pieceN%
包含文件的第N个二进制文件%filekey%
已知\n
)结束。我面临两个问题:
InputStream
中提取该行,查找\n
。但是,如果来自%pieceN%
的字节还包含回车符怎么办?N:
。就像我之前的问题一样:如果%pieceN%
包含:
?答案 0 :(得分:1)
由于你知道data %filekey% [3:%piece3% 5:%piece5% 7:%piece7% 8:%piece8% 9:%piece9%]
的每个部分的长度 - 你知道空格的数量,你知道%filekey%
是什么,你知道每个%pieceN%
的长度等等 - 这意味着您知道data %filekey% [3:%piece3% 5:%piece5% 7:%piece7% 8:%piece8% 9:%piece9%]
的全长,因此您只需使用java.io.InputStream.read(byte[])
或.read(byte[], int, int)
来读取所需的确切字节数。 (注意那些方法都返回int
以指示它们实际读取的字节数。您可能需要在循环中调用它们以确保填充字节数组。)不要担心搜索{ {1}}。