Posso leggere un array di byte da un file scanner?

0

Domanda

Java.util.scanner in grado di leggere una grande varietà di tipi di dati tra cui il numero di Byte, ma per quanto riguarda byte[]? Ho cercato informazioni su Oracle sito così come altri siti web, ma sto avendo difficoltà a trovare informazioni sulla scansione di byte[], quindi mi chiedo se è ancora possibile. Sto prendendo un corso Java e ci è stato chiesto di memorizzare una password criptata in un byte[], scrivere il byte[] per file, quindi leggere il byte[] di nuovo. I requisiti di questo compito, non riesco a convertire i byte[] a una stringa, deve rimanere un byte[]. -- Grazie in anticipo per i vostri suggerimenti!

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

Migliore risposta

3

siamo stati incaricati per la memorizzazione di password cifrate in un byte[], scrivere il byte[] per file, quindi leggere il byte[] di nuovo.

Un java.util.Scanner non è necessario per questa attività.

È possibile scrivere un byte[] utilizzando un OutputStream e leggere un byte[] utilizzando un InputStream.

Ci sono tagliati corti e metodi per la lettura e la scrittura byte[] matrici e nel Files metodi di utilità:

  • 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

grazie per il suggerimento! Quelli sono metodi nuovi per me, quindi sono felice di imparare.
mak95

Credo che l'op potrebbe essere fa riferimento a j.u.scanner nel contesto di leggere la password da stdin.
Emil Koutanov
2

java.util.Scanner è un testo scanner. Che è, i byte che legge da input (stdin, diciamo) è tenuto a rispettare per un determinato set di caratteri, di solito UTF-8.

In caso di nextByte()non leggere e restituire un byte di dati non elaborati direttamente. Piuttosto, si legge un testo e restituisce il token successivo come un byte. Ecco cosa la documentazione di java.util.Scanner.nextByte(radix) dice (enfasi aggiunta da me):

Se il token successivo corrisponde l'Intero espressione regolare definita in precedenza, quindi il token viene convertito in un valore di byte come se rimuovendo tutte le impostazioni locali prefissi specifici, gruppo separatori, e localespecific suffissi, quindi la mappatura non-ASCII cifre in ASCIIdigits via Personaggio.cifre, anteponendo il anegative con il segno (-) se il locale specifico negativo prefissi e suffissi erano presenti, e passando la stringa di Byte.parseByte con thespecified radix.

Così, ciò che dovete fare è leggere come stringa e la conversione di byte utilizzando il giusto set di caratteri (UTF-8, di solito).

2021-11-24 05:28:28

che rende perfetto senso, e mi sento così stupida per dimenticare che il mio byte[] in file era in realtà una stringa. Ho usato il mio metodo toString per lo scrive il file così, naturalmente, ho solo bisogno di convertire byte[] una volta ho letto in. Grazie per il promemoria.
mak95

In altre lingue

Questa pagina è in altre lingue

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