2015-10-12 79 views
0

我想知道是否可以將文件的多個字節[]添加到數組列表 以後,再將btye []寫回到文件中。Arraylist of byte [] Java

對不起,我這是第一次發帖 下面是我的代碼片段。 輸出文件似乎更大然後是原始文件,我似乎無法找出原因

ArrayList<byte[]> tempStorage = new ArrayList<byte[]>(); 
byte[] byteArray; 

while (n < length && n != -1) 
{ 
    byteArray = new byte[960]; 
    n = in.read(byteArray, 0, 960); 
    tempStorage.add(byteArray); 
    count++; 
} 

for (byte[] temp: tempStorage) { 
    fileOuputStream.write(temp); 
} 
fileOuputStream.close(); 
+5

你爲什麼不嘗試,看看它自己呢? – Abubakkar

+2

請在嘗試之前嘗試,但如果您在測試中遇到問題,可以詢問! – Aroniaina

+0

是的,你可以.... – nafas

回答

2

比方說你的陣列的該尺寸爲4和文件的大小爲6。您先讀取4個字節,將其放入數組中並將該數組存儲在列表中。然後,您正在讀取最後2個字節(因爲大小爲6)並將其存儲在大小爲4的數組中。這意味着最後一個數組的某些部分將爲空,應忽略

但在你

for (byte[] temp: tempStorage) { 
    fileOuputStream.write(temp); 
} 

你正在編寫完全最後一個數組,其中包括應該被忽略(所以你會寫4個字節,而不是2,這將使你的文件更大)的一部分。

所以對於最後臨時,你應該使用write方法,將描述有多少個字節數組我們要使用(你有n變量信息,因爲你在n = in.read(byteArray, 0, 960);得到它)。

所以對於最後temp嘗試更多的東西一樣fileOuputStream.write(temp,0,n)