Můžu číst byte array ze souboru pomocí skeneru?

0

Otázka

Java.util.skener může číst různé datové typy, včetně Byte, ale to, co o byte[]? Hledal jsem informace na internetové stránky společnosti Oracle stejně jako jiné webové stránky, ale mám problém najít informace o skenování byte[], takže jsem přemýšlel, jestli je to vůbec možné. Beru kurz Java a měli jsme za úkol skladování šifrované heslo do byte[], napište byte[] pro soubor, pak si přečtěte byte []. Vzhledem k požadavkům tohoto úkolu, nelze převést na byte[] do string, musí zůstat byte[]. -- Předem děkuji za vaše návrhy!

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

Nejlepší odpověď

3

měli jsme za úkol skladování šifrované heslo do byte[], napište byte[] pro soubor, pak si přečtěte byte [].

A java.util.Scanner není nutné pro tento úkol.

Můžete napsat byte[] pomocí OutputStream a číst byte[] pomocí InputStream.

Tam jsou short-cut metody pro čtení a psaní byte[] pole, stejně v Files nástroj metod:

  • 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

děkuji za návrh! To jsou nové metody ke mně, takže jsem šťastný, že se jim učit.
mak95

Myslím, že op by mohl být s odkazem na j.u.skener v kontextu čtení heslo ze standardního vstupu.
Emil Koutanov
2

java.util.Scanner je text scanner. To znamená, že bajtů čte ze vstupu (stdin) se očekává, že k dosažení souladu na určitou znakovou sadu, obvykle UTF-8.

V případě nextByte()to neznamená, přečíst a vrátit byte jako syrové bajt přímo. Spíše to čte text a vrátí následující token jako byte. Tady je to, co v dokumentaci java.util.Scanner.nextByte(radix) říká (zdůraznění přidáno autorem):

Pokud další token odpovídá Číslo regulární výraz výše definovaných token se pak převede do byte hodnotu , jako kdyby tím, že odstraní všechny národní prostředí specifické předpony, skupiny oddělovače, a localespecific přípon, pak mapování non-ASCII číslic do ASCIIdigits přes Charakter.číslice, prepending význam záporných znaménko ( - ), pokud národní prostředí specifické negativní předpony a přípony byly přítomny, a kolem výsledný string na Byte.parseByte s zadané radix.

Takže, co budete muset udělat, je číst jako string a převést na bajty použití správné znakové sady (UTF-8, obvykle).

2021-11-24 05:28:28

to dává perfektní smysl, a cítím se tak hloupě, protože jsem zapomněla, že moje byte[] v souboru byl vlastně řetězec. Použil jsem toString metoda zapíše jej do souboru, takže samozřejmě, že jsem jen třeba převést zpět na byte[] jednou jsem to četl. Děkuji za připomenutí.
mak95

V jiných jazycích

Tato stránka je v jiných jazycích

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