Puedo leer una matriz de bytes del archivo usando el scanner?

0

Pregunta

Java.util.escáner puede leer una variedad de tipos de datos incluidos en Bytes, pero, ¿qué acerca de byte[]? He buscado información sobre Oracle del sitio web así como de otros sitios web, pero estoy teniendo problemas para encontrar información sobre el escaneado de byte[], me pregunto si es posible aún. Estoy tomando un curso de Java y estábamos con la tarea de almacenar una contraseña encriptada en un byte[], escribe el byte[] a presentar, a continuación, leer el byte[] de nuevo. Teniendo en cuenta los requisitos de esta tarea, no puedo convertir el byte[] para una cadena, se tiene que seguir siendo un byte[]. -- Gracias de antemano por sus sugerencias!

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

Mejor respuesta

3

estábamos con la tarea de almacenar una contraseña encriptada en un byte[], escribe el byte[] a presentar, a continuación, leer el byte[] de nuevo.

Un java.util.Scanner no es necesario para esta tarea.

Usted puede escribir una byte[] el uso de un OutputStream y leer un byte[] el uso de un InputStream.

Hay atajo métodos para leer y escribir byte[] matrices, así como en el Files métodos de utilidad:

  • 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

gracias por la sugerencia! Son los nuevos métodos para mí, así que estoy feliz de aprender de ellos.
mak95

Creo que el op podría estar refiriéndose a j.u.escáner en el contexto de la lectura de la contraseña de stdin.
Emil Koutanov
2

java.util.Scanner es un texto del escáner. Es decir, los bytes que lee de la entrada (stdin, por ejemplo) se deben cumplir para un determinado conjunto de caracteres, generalmente UTF-8.

En el caso de nextByte(), no leer y devolver un byte como un byte sin procesar directamente. Más bien, se lee un texto y devuelve el siguiente token como un byte. He aquí lo que la documentación de java.util.Scanner.nextByte(radix) dice (énfasis añadido por mí):

Si el siguiente token coincide con el número Entero expresión regular definida arriba, a continuación, el símbolo se convierte en un valor de byte como si por la eliminación de todas regional prefijos específicos, separadores de grupos, y localespecific sufijos, entonces la asignación de los no-ASCII dígitos en ASCIIdigits a través de Caracteres.dígitos, anteponiendo anegative signo (-) si la configuración regional específica negativo prefijos y sufijos estaban presentes, y pasando la cadena resultante a Byte.parseByte con thespecified radix.

Así, lo que tenemos que hacer es leer como una cadena de texto y convertirlo en bytes utilizando el juego de caracteres (UTF-8, por lo general).

2021-11-24 05:28:28

que hace perfecto sentido, y me siento tan tonta para olvidar que mi byte[] en el archivo de la era en realidad una cadena. He usado mi método toString para escribir a archivo, así que por supuesto que necesita para convertir de nuevo a byte[] una vez que la leí en. Gracias por el aviso.
mak95

En otros idiomas

Esta página está en otros idiomas

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