0
我嘗試從我的服務器(NanoHttpd)發送多個文件到我的客戶端(Apache DefaultHttpClient)。
我的方法是通過NanoHttpd的一個響應發送多個文件。
爲此我想使用SequenceInputStream。
我想連接多個文件,通過響應(InputStream)發送它們,然後用我的客戶端在一個單獨的文件中再次寫入每個文件。
在Serverside集團我稱之爲:Java SequenceInputStream
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,或如何解決我的問題正確讀取。
在此先感謝。
添加一個分隔符,它是文件大小並追加它。然後讀取很多字節,然後讀取下一個文件的8字節大小。 – 2013-04-26 16:34:13