我可以使用扫描仪从文件中读取字节数组吗?
Can I read a byte array from file using scanner?
Java.util.scanner可以读取包括Byte在内的多种数据类型,但是byte[]呢?我已经在 Oracle 的网站和其他网站上搜索过信息,但我无法找到有关扫描 byte[] 的信息,所以我想知道是否有可能。我正在上 Java 课程,我们的任务是将加密密码存储到 byte[],将 byte[] 写入文件,然后再读回 byte[]。鉴于此任务的要求,我无法将 byte[] 转换为字符串,它必须保留为 byte[]。 -- 预先感谢您的建议!
we were tasked with storing an encrypted password into a byte[], write the byte[] to file, then read the byte[] back in.
此任务不需要 java.util.Scanner
。
您可以使用 OutputStream
and read a byte[]
using a InputStream
编写 byte[]
。
在Files
实用方法中也有读取和写入byte[]
数组的快捷方法:
public static Path write(Path path, byte[] bytes, OpenOption... options) throws IOException
public static byte[] readAllBytes(Path path) throws IOException
java.util.Scanner
是一个文本扫描器。也就是说,它从输入(比如标准输入)中读取的字节应该符合特定的字符集,通常是 UTF-8。
在nextByte()
的情况下,它不会直接读取和return一个字节作为原始字节。相反,它读取一个文本并 return 将下一个标记作为一个字节。以下是 java.util.Scanner.nextByte(radix)
的文档所说的(强调由我添加):
If the next token matches the Integer regular expression defined above then the token is converted into a byte value as if by removing all locale specific prefixes, group separators, and localespecific suffixes, then mapping non-ASCII digits into ASCIIdigits via Character.digit, prepending anegative sign (-) if the locale specific negative prefixes and suffixes were present, and passing the resulting string to Byte.parseByte with thespecified radix.
因此,您需要做的是读取字符串并使用正确的字符集(通常是 UTF-8)将其转换为字节。
Java.util.scanner可以读取包括Byte在内的多种数据类型,但是byte[]呢?我已经在 Oracle 的网站和其他网站上搜索过信息,但我无法找到有关扫描 byte[] 的信息,所以我想知道是否有可能。我正在上 Java 课程,我们的任务是将加密密码存储到 byte[],将 byte[] 写入文件,然后再读回 byte[]。鉴于此任务的要求,我无法将 byte[] 转换为字符串,它必须保留为 byte[]。 -- 预先感谢您的建议!
we were tasked with storing an encrypted password into a byte[], write the byte[] to file, then read the byte[] back in.
此任务不需要 java.util.Scanner
。
您可以使用 OutputStream
and read a byte[]
using a InputStream
编写 byte[]
。
在Files
实用方法中也有读取和写入byte[]
数组的快捷方法:
public static Path write(Path path, byte[] bytes, OpenOption... options) throws IOException
public static byte[] readAllBytes(Path path) throws IOException
java.util.Scanner
是一个文本扫描器。也就是说,它从输入(比如标准输入)中读取的字节应该符合特定的字符集,通常是 UTF-8。
在nextByte()
的情况下,它不会直接读取和return一个字节作为原始字节。相反,它读取一个文本并 return 将下一个标记作为一个字节。以下是 java.util.Scanner.nextByte(radix)
的文档所说的(强调由我添加):
If the next token matches the Integer regular expression defined above then the token is converted into a byte value as if by removing all locale specific prefixes, group separators, and localespecific suffixes, then mapping non-ASCII digits into ASCIIdigits via Character.digit, prepending anegative sign (-) if the locale specific negative prefixes and suffixes were present, and passing the resulting string to Byte.parseByte with thespecified radix.
因此,您需要做的是读取字符串并使用正确的字符集(通常是 UTF-8)将其转换为字节。