Во-первых, если вы собираетесь только читать из файла, а не записывать в него, я бы посоветовал открыть файл RandomAccessFile как «r», а не «rw».Причина в том, что, если файл открыт для предоставления доступа на запись, вы можете фактически переместить указатель в файле в место, которое больше длины файла, потому что вы можете потенциально написать файл настолько большого размера, насколько вам нужно.
Например, если у вас есть файл длиной 100 байт, открытие его в режиме только для чтения заставит вас держать указатель где-то в этих 100 байтах.Однако, если вы открываете тот же файл в режиме чтения-записи, вы можете указать RandomAccessFile искать (250), и он будет подчиняться без каких-либо проблем, так как считает, что вы потенциально хотите записать данные в этот момент в файле.
Итак, как утверждали некоторые другие, вполне возможно, что вы перешли за конец файла, что вполне допустимо в режиме «rw».
Во-вторых, если вы собираетесьчитать с начала файла, я бы порекомендовал вам использовать seek (), а не skipBytes ().Используя seek (), вы гарантируете, что вы перемещаетесь в то место, где вы хотите быть, поскольку оно всегда относительно начала файла.Однако skipBytes () относится к текущей позиции указателя в файле, поэтому, если вы случайно переместили указатель где-то в своем коде между конструктором RandomAccessFile и вызовом метода skipBytes (), вы не окажетесь в правильном месте.
Итак, если вы собираетесь работать с начала файла, seek () обеспечил более высокий уровень безопасности, который вы в конечном итоге получите в правильном месте в файле, независимо от того, чтоиначе вы делаете для RandomAccessFile.