Czy mogę przeczytać tablicę bajtów z pliku za pomocą skanera?

0

Pytanie

Java.util.scanner może odczytywać różne rodzaje danych, w tym bajtów, ale co byte[]? Szukałem informacji na stronie Oracle, a także na innych stronach, ale mam problem ze znalezieniem informacji na temat skanowania byte [], dlatego zastanawiam się, czy to możliwe w ogóle. Przechodzę kurs Java, i było nam powierzone zaszyfrowane hasło w byte [], nagrać byte[] w pliku, a następnie odczytać bajt[] z powrotem. Biorąc pod uwagę wymagania tego zadania, nie mogę przekonwertować byte[] w wierszu, musi pozostać bajcie[]. -- Z góry dziękuję za sugestie!

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

Najlepsza odpowiedź

3

było nam powierzone zaszyfrowane hasło w byte[], nagrać byte[] w pliku, a następnie odczytać bajt[] z powrotem.

A java.util.Scanner nie jest to konieczne do wykonania tego zadania.

Możesz napisać byte[] za pomocąOutputStream i przeczytałem byte[] za pomocąInputStream.

Istnieją krótkie metody odczytu i zapisu byte[] tablice, a także wFiles przydatne metody:

  • 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

dziękuję za propozycję! Dla mnie to nowe metody, więc z przyjemnością je oglądam.
mak95

Przypuszczam, że operacja może mieć na myśli skaner j.u.w kontekście odczytywania hasła z stdin.
Emil Koutanov
2

java.util.Scanner jest to tekstowy skaner. Czyli bajtów, które odczytuje z danych wejściowych (powiedzmy, stdin), muszą być zgodne z określonym formacie, zwykle UTF-8.

W przypadku, gdy nextByte()on nie czyta i nie zwraca bajt bezpośrednio w postaci surowego bajty. Raczej odczytuje tekst i zwraca następny token w postaci bajtu. Oto, co z dokumentacji java.util.Scanner.nextByte(radix) mówi (wybrany przeze mnie):

Jeśli następny token spełnia całe wyrażenie regularne pewnych kategorii, to znacznik jest konwertowany na wartość bajtu , a jeśli usunąć wszystkie locale określonych префиксам, separatory grup i localespecific przyrostki, mapowanie nie-ASCII znaków w ASCIIdigits przez charakter.cyfra, dodając anegative znak ( - ), jeśli określony regionalne negatywne przedrostki i przyrostki byli obecni, i przekazuje otrzymaną linię w Byte.parseByte z podstawą wskazania.

Tak więc, trzeba będzie przeczytać jak wiersz i przekształcić ją w bajty, wykorzystując kodowanie (zwykle UTF-8).

2021-11-24 05:28:28

to ma sens, i czuję się tak głupio, zapominając, że mój byte[] w pliku w rzeczywistości był ciągiem. Użyłem swoją metodę toString, aby zapisać go do pliku, więc, oczywiście, po prostu potrzebuję przekształcić z powrotem w byte [], jak tylko przeczytam. Dziękuję ci za przypomnienie.
mak95

W innych językach

Ta strona jest w innych językach

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