2011-09-30 46 views
2

我使用java.nio來複制文件,除了在文件末尾有一行[] s的事實外,它複製得很好。Java java.nio寫入[] s的線

這裏是我的代碼:

source (the source channel) 
source.read(buffer); 
buffer.flip(); 
mbb.put(buffer) 
mbb is MappedByteBuffer 

來源渠道

source = new FileInputStream(original(this is a File)).getChannel(); 

MappedByteBuffer:

source.map(FileChannel.MapMode.READ_WRITE, 0, 1024); 
+1

它看起來像你已經傳遞了一個字節數組(或其他),其中包含一些'空字節'的末尾。 我認爲你需要提供更多的代碼:你如何構建源通道和MappedByteBuffer? (另外,我認爲你的意思是'MappedByteBuffer'不是'MappedByteArray') – laher

+0

@ amir75,是的,這是一個錯字,它實際上是'MappedByteBuffer'。添加了你上面說的。 – LanguagesNamedAfterCofee

+0

該文件末尾的小方塊可能是您無法識別的unicode字符。 – pablosaraiva

回答

0

你假設該文件是1024個字節長,而不是使用實際的文件尺寸。我懷疑垃圾是在MappedByteBuffer中而不是文件中。

+0

是的,我沒有使用'Buffer.allocateDirect()' – LanguagesNamedAfterCofee