Я написал код, который дает мне значения того, где разделить файл по размеру. Проблема заключается в том, что при изменении длины файла я получаю неправильные значения, где следует разбивать файл.
Это код: (Я не уверен, что это самый быстрый способ определить, где я должен разбить файл.)
long parts = 5L;
long len = 123456L;
long partLen = len / parts;
long tmp = 1L;
for (int i = 0; i < parts; i++) {
tmp += partLen;
long start = tmp - partLen;
long end = tmp - 1L;
System.out.printf("%d to %d\n", start, end);
}
Будет выведено:
1 to 24691
24692 to 49382
49383 to 74073
74074 to 98764
98765 to 123455
Эти значения являются байтами. Я буду использовать эти значения для чтения части файла и его записи.
Ex. Прочитайте 1 байт до 24691 байта, затем запишите его в файл ...
Видите, что 123455
не совсем 123456
. Как я могу добавить оставшиеся байты?
Что я должен использовать, чтобы прочитать файл, RandomAccessFile
'seek()
+ read(byte[] b)
? или BufferedInputStream
х read(buffer,offset,len)
?