Posso ler uma matriz de bytes do arquivo usando o scanner?

0

Pergunta

O Java.util.scanner pode ler uma grande variedade de tipos de dados incluindo o Byte, mas que sobre byte[]? Eu procurei por informações sobre a Oracle do site, bem como outros sites, mas eu estou tendo problemas em encontrar as informações sobre a digitalização de byte[], então eu estou querendo saber se isso é mesmo possível. Estou fazendo um curso de Java e fomos incumbidos com a tarefa de armazenar uma senha criptografada em um byte[], escreve o byte[] para ficheiro e, em seguida, ler o byte[] novamente. Tendo em conta os requisitos desta tarefa, eu não posso converter o byte[] para uma corda, ele deve manter-se um byte[]. -- Agradeço antecipadamente por suas sugestões!

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

Melhor resposta

3

fomos incumbidos com a tarefa de armazenar uma senha criptografada em um byte[], escreve o byte[] para ficheiro e, em seguida, ler o byte[] novamente.

Um java.util.Scanner não é necessário para esta tarefa.

Você pode escrever um byte[] usando um OutputStream e a leitura de um byte[] usando um InputStream.

Existem corte curto métodos para leitura e escrita byte[] matrizes, bem como no Files métodos de utilitário:

  • 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

obrigado pela sugestão! Aqueles que são novos métodos para mim, então eu estou feliz de saber-los.
mak95

Eu acredito que o op pode ser referência para j.u.scanner no contexto da leitura da palavra-passe a partir do stdin.
Emil Koutanov
2

java.util.Scanner é um texto de scanner. Isto é, os bytes que ele lê da entrada (stdin, digamos) é esperado para cumprir um determinado conjunto de caracteres, geralmente UTF-8.

No caso de nextByte(), ele não lê e retorna um byte como uma matéria-prima de byte diretamente. Em vez disso, ele lê um texto e retorna o próximo token como um byte. Aqui está o que a documentação de java.util.Scanner.nextByte(radix) diz (ênfase acrescentada por mim):

Se o próximo token corresponde ao número Inteiro de expressão regular definida acima, em seguida, o token é convertido em um valor de byte como se removendo todas as localidade de prefixos específicos, grupo de separadores, e localespecific sufixos, em seguida, o mapeamento não-ASCII dígitos em ASCIIdigits através de Caracteres.dígitos, prepending anegative o sinal (-) se a localidade específica negativo prefixos e sufixos estavam presentes, e passar a seqüência de caracteres resultante de Byte.parseByte com thespecified base.

Então, o que você tem a fazer é ler as string e convertê-lo em bytes usando o botão direito do conjunto de caracteres (UTF-8, geralmente).

2021-11-24 05:28:28

isso faz sentido, e eu me sinto tão bobo para esquecer que o meu byte[] no arquivo, na verdade, foi uma seqüência de caracteres. Eu usei o meu método toString para escrever para o arquivo então é claro que eu só preciso para converter de volta para byte[] uma vez eu li em. Obrigado pela lembrança.
mak95

Em outros idiomas

Esta página está em outros idiomas

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