Проблема с классом сканера в java

Я записал некоторые двоичные данные в файл, используя класс FileOutputStream. Теперь я хочу прочитать его с классом Scanner, но он не может. Можно ли прочитать двоичный файл с помощью класса Scanner? Если да, то как?

Редактировать:

I solve it by in.nextline();

person Mahdi_Nine    schedule 12.06.2011    source источник
comment
Проверьте это: stackoverflow.com/questions/5347327/   -  person Saurabh Gokhale    schedule 12.06.2011
comment
Вы не можете прочитать двоичный файл с помощью in.readLine(). Если вы можете прочитать файл с помощью сканера, это не двоичный файл.   -  person Peter Lawrey    schedule 12.06.2011
comment
У вас есть более десяти вопросов, которые вы не приняли. ;)   -  person Peter Lawrey    schedule 12.06.2011


Ответы (3)


Чтобы прочитать двоичный файл, вы можете использовать DataInputStream или ByteBuffer с NIO.

person Peter Lawrey    schedule 12.06.2011
comment
я хочу использовать из класса сканера - person Mahdi_Nine; 12.06.2011
comment
@mehdi, можете ли вы объяснить, почему использование сканера является обязательным требованием? Вы можете использовать Scanner с большим количеством работы. Вам все равно нужно будет использовать DataInputStream для преобразования данных в текст для использования сканером. Это было бы бессмысленно, если у вас нет существующей библиотеки, которая принимает только сканер. - person Peter Lawrey; 12.06.2011

Теперь я хочу прочитать его с помощью класса Scanner, но он не может.

Это правильное наблюдение. Сканер не будет читать двоичные данные, он не предназначен для этой цели. Сканеры ожидают, что им будет предоставлен объект, который реализует Readable, в контракте которого указано, что могут быть возвращены только символы. Он может принимать InputStream, но, как указано в API: байты из потока преобразуются в символы с использованием кодировки базовой платформы по умолчанию.

Можно ли прочитать двоичный файл с помощью класса Scanner? Если да, то как?

Следуя предыдущему объяснению, это невозможно, если только вы не написали их таким образом, чтобы описанный выше процесс преобразования байтов возвращал символы. Если вам нужен доступ к двоичным данным из потока, вам нужно избегать использования Читатели и объекты Readable. Вам нужно будет работать с необработанными InputStreams или FilterInputStreams, который вернет байт массивы или подходящие объекты. В вашем конкретном случае вам понадобится FileInputStream< /а>.

Советы:

  1. Используйте объекты Reader и Writer при работе символы в Java.
  2. Избегайте использования вышеуказанного для двоичных данных. Вместо этого используйте InputStreams и OutputStreams.
  3. Поймите, как шаблон декоратора реализован в java.io.
person Vineet Reynolds    schedule 12.06.2011

Вы читали документы API?

Простой текстовый сканер, который может анализировать примитивные типы и строки с помощью регулярных выражений.

http://download.oracle.com/javase/1,5.0/docs/api/java/util/Scanner.html

Это может помочь вам:

Лучший способ чтения структурированных двоичных файлов с помощью Java

person PeterMmm    schedule 12.06.2011
comment
Я видел это, но не видел ничего, что могло бы мне помочь! - person Mahdi_Nine; 12.06.2011
comment
@mehdi, тебе не приходило в голову, что двоичные данные - это не совсем то же самое, что примитивные типы и строки? Чтобы подчеркнуть часть отрывка, опубликованного Питером: Простой сканер текста, который может анализировать примитивные типы и строки с использованием регулярных выражений. - person Vineet Reynolds; 12.06.2011
comment
@mehdi, тогда почему ты настаиваешь на использовании сканера? - person Vineet Reynolds; 12.06.2011