0

我尝试将多个文件从我的服务器(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 中正确读取,或者如何解决我的问题。

提前致谢。

4

1 回答 1

0

它不会以这种方式工作。SequenceInputStream 会将所有输入流合并到一个实心字节流中。不会有分隔符或 EOF。我建议放弃这个想法并寻找不同的方法。

于 2013-04-26T16:37:59.720 回答