![fileKey fileKey]()
我必须解码包含文件片段的套接字传输:data %filekey% [3:%piece3% 5:%piece5% 7:%piece7% 8:%piece8% 9:%piece9%]%pieceN%包含文件的第N个二进制文件件的长度是已知的%filekey%是已知的索引是已知的(但顺序可能不正确)除碎片外的所有内容均为ASCII该消息以回车符(\n)结尾。此“协议”无法更改。我面临两个问题:我可以从我的InputStream中提取行,寻找\n。但是,如果%pieceN%中的一个字节还包含回车符怎么办?要拆分每个片段及其对应的索引,我必须找到N:。就像我之前的问题:如果%pieceN%包含:怎么办? 最佳答案 由于您知道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 。 10-08 06:49