我尝试将多个文件从我的服务器(NanoHttpd)发送到我的客户端(Apache DefaultHttpClient)。
我的方法是通过NanoHttpd的一个Response发送多个文件
为此,我想使用SequenceInputStream
我正在尝试连接多个文件,通过响应(InputStream)发送它们,并使用我的客户端在一个单独的文件中再次写入每个文件。
在Serverside上我称之为:
List<InputStream> data = new ArrayList<InputStream>(o_file_path.size());
for (String file_name : files)
{
File file = new File(file_name);
data.add(new FileInputStream(file));
}
InputStream is = new SequenceInputStream(Collections.enumeration(data));
return new NanoHTTPD.Response(HTTP_OK, "application/octet-stream", is);
现在我的问题是如何正确接收和拆分文件 我在我的客户端上尝试过这种方式,但它不起作用:
int read = 0;
int remaining = 0;
byte[] bytes = new byte[buffer];
// Read till the end of the Stream
while ( (read != -1) && (counter < files.size()))
{
// Create a .o file for the current file
read = 0;
remaining = is.available();
// Should open each Stream
while (remaining > 0)
{
read = is.read(bytes);
remaining = remaining - read;
os.write(bytes, 0, read);
}
os.flush();
os.close();
}
这样我想要遍历所有Stream(直到读取== 1,或者我知道不再有文件),并将任何流读入文件。
我似乎明白了一些开创性的错误,因为is.available()总是0 谁能告诉我如何从这个SequencedInputStream中正确阅读,或者如何解决我的问题。
提前致谢。
答案 0 :(得分:0)
它不会以这种方式工作。 SequenceInputStream将在一个实心字节流中合并所有输入流。没有分隔符或EOF。我建议放弃这个想法,寻找不同的方法。