Могу ли я прочитать массив байтов из файла с помощью сканера?

0

Вопрос

Java.util.scanner может считывать различные типы данных, включая байт, но как насчет байта[]? Я искал информацию на веб-сайте Oracle, а также на других веб-сайтах, но у меня возникли проблемы с поиском информации о сканировании байта [], поэтому мне интересно, возможно ли это вообще. Я прохожу курс Java, и нам было поручено сохранить зашифрованный пароль в байт [], записать байт[] в файл, а затем прочитать байт[] обратно. Учитывая требования этой задачи, я не могу преобразовать байт[] в строку, он должен оставаться байтом[]. -- Заранее благодарю вас за ваши предложения!

java java.util.scanner
2021-11-24 04:12:51
2

Лучший ответ

3

нам было поручено сохранить зашифрованный пароль в байт[], записать байт[] в файл, а затем прочитать байт[] обратно.

A java.util.Scanner не является необходимым для выполнения этой задачи.

Вы можете написать byte[] используяOutputStream и прочел byte[] используяInputStream.

Существуют короткие методы чтения и записи byte[] массивы, а также вFiles полезные методы:

  • public static Path write​(Path path, byte[] bytes, OpenOption... options) throws IOException
  • public static byte[] readAllBytes​(Path path) throws IOException
2021-11-24 04:21:24

спасибо вам за предложение! Для меня это новые методы, поэтому я с удовольствием их изучаю.
mak95

Я полагаю, что операция может иметь в виду сканер j.u.в контексте считывания пароля из stdin.
Emil Koutanov
2

java.util.Scanner это текстовый сканер. То есть байты, которые он считывает с входных данных (скажем, stdin), должны соответствовать определенной кодировке, обычно UTF-8.

В случае, если nextByte(), он не считывает и не возвращает байт непосредственно в виде необработанного байта. Скорее, он считывает текст и возвращает следующий токен в виде байта. Вот что из документации java.util.Scanner.nextByte(radix) говорит (выделено мной):

Если следующий токен соответствует целое регулярное выражение определенных категорий, то маркер преобразуется в значение байта , а если убрать все локали определенным префиксам, разделители групп и localespecific суффиксы, то сопоставление не-ASCII знаков в ASCIIdigits через характер.цифра, добавляя anegative знак ( - ), если определенный языковой стандарт отрицательные префиксы и суффиксы присутствовали, и передает полученную строку в Byte.parseByte с основанием указанное.

Итак, вам нужно будет прочитать как строку и преобразовать ее в байты, используя правильную кодировку (обычно UTF-8).

2021-11-24 05:28:28

это имеет смысл, и я чувствую себя так глупо, забывая, что мой байт[] в файле на самом деле был строкой. Я использовал свой метод toString, чтобы записать его в файл, поэтому, конечно, мне просто нужно преобразовать обратно в байт [], как только я его прочитаю. Спасибо вам за напоминание.
mak95

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................