我尝试将多个文件从我的服务器(NanoHttpd)发送到我的客户端(Apache DefaultHttpClient)。
我的方法是通过 NanoHttpd 的一个响应发送多个文件。
为此,我想使用 SequenceInputStream。
我正在尝试连接多个文件,通过响应(InputStream)发送它们,然后用我的客户端将每个文件再次写入一个单独的文件中。
在服务器端,我称之为:
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();
}
这样我想遍历所有流(直到读取 == 1,或者我知道不再有文件),并将任何流读入文件。
我显然似乎理解了一些突破性的错误,因为 is.available() 始终为 0。
谁能告诉我如何从这个 SequencedInputStream 中正确读取,或者如何解决我的问题。
提前致谢。