Я использую гугл-переводчик, надеюсь вопрос понятен.
Есть один момент я не разбираюсь в файлах произвольного доступа .Не понимаю как работает программа но работает.
Это моя программа:
// ---------------------------------------------
RandomAccessFile RandomAccessFile = new RandomAccessFile ( " pathfile ", " r");
byte [] document = new byte [ ( int) randomAccessFile.length ()] ;
randomAccessFile.read (document) ;
// ---------------------------------------------
В строке 1 я получаю доступ к файлу в режиме чтения. В строке 2 я создаю объект массива байтов того же размера, что и файл. В строке 3 считывается массив байтов.
Но никогда не сбрасывается файл на массив байтов.
Я думаю, что программа должна выглядеть примерно так:
/ / ---------------------------------------------
RandomAccessFile RandomAccessFile = new RandomAccessFile ( " pathfile ", " r");
byte [] document = new byte [ ( int) randomAccessFile.length ()] ;
// Line changed
document = randomAccessFile.read();
// ---------------------------------------------
В документации по java сказано:
randomAccessFile.read() ;
Reads a byte of data from this file . The byte is returned as an integer in
the range 0 to 255 ( 0x00- 0x0ff ) .
Возвращает только количество байтов, но не байты.
Кто-нибудь может объяснить мне, как эта строка выгружает байты в документе переменной byte [] с помощью этого оператора?
randomAccessFile.read (document) ;
Спасибо!!
// ------------------------------------------------------------------------------
Другой пример:
Я сравниваю этот метод с BufferedReader:
File file = new File ("C: \ \ file.txt");
FileReader fr = new FileReader (file);
BufferedReader br = new BufferedReader (fr);
...
String line = br.readLine ();
BufferedReader читает строку и передает ее в строку.
Я вижу этот оператор java, который передает содержимое файла в переменную.
String line = br.readLine ();
Но я не вижу этого в другом утверждении:
RandomAccessFile.read ();
только что прочитал, содержание нигде не переходит эту строчку...