Môžem čítať byte pole zo súboru pomocou skenera?

0

Otázka

Java.util.skener môžete prečítať rôzne typy údajov, vrátane Byte, ale čo byte[]? Ja som hľadal informácie o Oracle je stránkach, rovnako ako iné webové stránky, ale mám problém nájsť informácie o skenovanie byte[], takže som premýšľal, či je to ešte možné. Som brať Java a samozrejme sme mali za úlohu ukladanie šifrované heslo do byte[], napíšte byte[] na súbor, potom si prečítajte byte[] späť. Vzhľadom na požiadavky tejto úlohy, nemôžem previesť byte[] na reťazec, má zostať byte[]. - Ďakujem vám vopred za vaše návrhy!

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

Najlepšiu odpoveď

3

my sme mali za úlohu ukladanie šifrované heslo do byte[], napíšte byte[] na súbor, potom si prečítajte byte[] späť.

A java.util.Scanner nie je potrebné pre túto úlohu.

Môžete napísať byte[] pomocou OutputStream a čítať byte[] pomocou InputStream.

K dispozícii sú krátke-cut metódy pre čítanie a písanie byte[] polia aj v Files pomôcka metódy:

  • 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

ďakujeme za návrh! Tie sú nové metódy na mňa, takže som rád, naučiť ich.
mak95

Verím, že op môže byť úplná (j.u.skener v kontexte čítanie heslo z stdin.
Emil Koutanov
2

java.util.Scanner je text scanner. To je bajtov to číta zo vstupného (stdin, povedať) sa očakáva, že na dosiahnutie súladu určitého charset, zvyčajne UTF-8.

V prípade nextByte()to neprečíta a vrátenie byte ako surové byte priamo. Skôr, to číta text a vráti sa budúci token ako byte. Tu je to, čo dokumentácie java.util.Scanner.nextByte(radix) hovorí (dôraz pridaný podľa mňa):

Ak sa nasledujúce token zápasy Celé regulárne výrazy definované vyššie, potom token je premenený na byte hodnotu , ako keby tým, že odstráni všetky miestne špecifické predpony, skupiny separátory, a localespecific prípony, potom mapovanie non-ASCII číslic do ASCIIdigits cez Charakter.číslica, prepending anegative znamienkom (-) v prípade, ak locale konkrétne negatívne predpony a prípony boli prítomné, a absolvovanie výsledný reťazec na Byte.parseByte s thespecified radix.

Takže, čo budete musieť urobiť, je prečítať si ako reťazec a previesť na bajtov pomocou pravého charset (UTF-8, zvyčajne).

2021-11-24 05:28:28

že dáva dokonalý zmysel, a cítim sa tak hlúpo pre zabúdajú, že môj byte[] v súbore bol vlastne reťazec. Som používal svoje metóda toString to zapísať sa do súboru tak, samozrejme, že som len potrebné previesť späť na byte[] raz som si to v. Ďakujem za pripomienku.
mak95

V iných jazykoch

Táto stránka je v iných jazykoch

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