2013-11-25 4 views
0

Im tring для передачи из файла filein, начиная с позиции 1300 (в единицах uint8) в fileto, используя функцию RandomAccessFile transferFrom.Передача Java из части двоичного файла?

fromfile = java.io.RandomAccessFile(ifile, 'rw'); 
fromchannel = fromfile.getChannel(); 
tofile = java.io.RandomAccessFile(ofile, 'rw'); 
tochannel = tofile.getChannel(); 
tochannel.transferFrom(fromchannel,n,fromfile.length()-n) 

tochannel.close(); 
fromchannel.close(); 
fromfile.close(); 
tofile.close(); 

Мой выходной файл просто пустой tho.

Кто-нибудь знает, что я делаю неправильно ???

Edit 1:

Я изменил

tochannel.transferFrom(fromchannel,n,fromfile.length()-n) 

в

fromchannel.transferTo(n,fromfile.length()-n,tochannel) 

Но теперь выход печати на весь файл сразу же за него, за исключением ставит много 00 шестнадцатеричные где заголовок в оригинале был ???

ответ

1

Вы хотите использовать transferTo Я считаю

fromchannel.transferTo(n,fromfile.length()-n,tochannel) 

, как transferFrom пытается начать с позиции п в OUTFILE, в то время как transferTo начнется в положении п в INFILE

+0

Ok, я изменил порядок Тхо to fromchannel.transferTo (n, fromfile.length() - n, tochannel). Его работа за исключением того, что выходной файл имеет много нулей в начале, где удаленный заголовок был ??? Любые идеи –

+0

Я не уверен, что заставило бы вас получать нули в начале? Возможно, вам поможет переход на java.io.FileOutputStream. – Scott

Смежные вопросы