Методы ReadLong и WriteLong в Java.Random.IO - PullRequest
0 голосов
/ 20 ноября 2011

Я пытаюсь написать Long, используя команду Java для случайного ввода-вывода файла следующим образом:

fstreamOut = new FileOutputStream(new File("C:\\Basmah","dataOutput.7"),true);
DataOutputStream out=new DataOutputStream(fstreamOut);
Long p= Long.parseLong(longNumberInString );  // Number of digits for this long key are 7-15
              out.writeLong(p);                  

Проблема в том, что когда я пишу 7-15-значное число, используя writeLong; записывает 8 байтов в файл. Затем я пытаюсь прочитать ту же запись в моей программе и расшифровать ее

Long l=in.readLong();

но я не получаю тот же номер, что я написал; Вместо этого я получаю исключение EOF.

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Длинный идентификатор 64-битный длинный. Это составляет 8 байтов. Метод writeLong метода DataOutputStream записывает двоичное представление long, а не текстовое. Не зная кода, используемого для чтения длинного значения, невозможно понять, почему оно не работает.

0 голосов
/ 20 ноября 2011

Код, указанный в вашем примере и комментарии, должен работать.Тот факт, что это не говорит о том, что здесь происходит что-то еще:

  • Возможно, запись и чтение происходят в разных файлах.
  • Возможно, записываемый файл не сбрасывается/ закрыто перед тем, как вы попытаетесь его прочитать.
  • Возможно, что-то еще перезаписывает файл.
  • Возможно, предоставленные вами фрагменты кода достаточно отличаются от реального кода, чтобы иметь значение.

В коде, который пытается прочитать файл, выведите то, что вы получите при вызове f.length().

...