Я пытаюсь записать очень большой файл в другой очень большой файл. Я получаю эту ошибку в строке записи файлового канала и не знаю почему. Я думал, что это потому, что я выходил за пределы типа данных long, но long может подняться до 9,223,372,036,854,775,807, а я только до 5,372,896,745 максимум Есть идеи, почему это происходит? Есть ли какой-то предел, который имеет MappedByteBuffer? Это не происходит для небольших файлов, и я не сталкивался с какими-либо проблемами при использовании того же кода в настольном приложении Java. (Происходит только на Android)
File f1 = new File(filename1);
FileChannel fic, foc;
long fsize;
MappedByteBuffer mBUf;
FileOutputStream out = new FileOutputStream(f1,true);
foc = out.getChannel();
File f2 = new File(filename2);
FileInputStream in = new FileInputStream(f2);
fic = in.getChannel();
fsize = fic.size();
for (long b = 0; b < fsize; b += 65536)
{
if (fsize - b < Resource.MEMORY_ALLOC_SIZE)
mBUf = fic.map(FileChannel.MapMode.READ_ONLY, b, fsize - b);
else
mBUf = fic.map(FileChannel.MapMode.READ_ONLY, b, Resource.MEMORY_ALLOC_SIZE);
foc.write(mBUf); //ERROR HERE!
}
fic.close();
in.close();
foc.close();
out.close();
Любые идеи / отзывы приветствуются!