我有一個應用程序使用它從Socket InputStream獲取的字節數組創建多個文件。當我只保存一個文件時,該文件可以完美保存,但如果我保存一個文件,然後重新實例化文件流並保存另一個文件,則第一個文件會損壞,第二個文件會完全保存。我在一個文本編輯器中打開了這兩個文件,它似乎(關於...)第一個文件的前五分之一是空格,但第二個文件已滿,並且它們都具有相同的大小屬性(9,128,731字節)。下面的例子是塞納里奧的重複,但具有相同腐敗的結果:Android FileOutputStream創建損壞的文件
FileOutputStream outStream;
outStream = new FileOutputStream("/mnt/sdcard/testmp3.mp3");
File file = new File("/mnt/sdcard/test.mp3");
FileInputStream inStream = new FileInputStream(file);
byte[] buffer = new byte[9128731];
inStream.read(buffer);
outStream.write(buffer, 0, buffer.length);
inStream.close();
outStream.flush();
outStream.close();
outStream = null;
outStream = new FileOutputStream("/mnt/sdcard/testmp32.mp3");
outStream.write(buffer, 0, buffer.length);
inStream.close();
outStream.flush();
outStream.close();
outStream = null;
我在一個普通的Java應用程序嘗試這個確切的代碼和文件都被保存沒有問題。有誰知道爲什麼Android這樣做?
任何幫助,將不勝感激
第一次寫入後輸出「buffer」的內容,看看它是否是您期望的內容。我懷疑這是問題所在。 – 2011-03-23 02:57:44
另外,爲什麼在使用'outStream.write(buffer)'時使用'outStream.write(buffer,0,buffer.length)'? – 2011-03-23 03:01:19