繁体   English   中英

我可以使用扫描仪从文件中读取字节数组吗?

[英]Can I read a byte array from file using scanner?

Java.util.scanner可以读取包括Byte在内的多种数据类型,但是byte[]呢? 我已经在 Oracle 的网站以及其他网站上搜索了信息,但是我无法找到有关扫描 byte[] 的信息,所以我想知道它是否可能。 我正在参加 Java 课程,我们的任务是将加密密码存储到 byte[] 中,将 byte[] 写入文件,然后将 byte[] 读回。鉴于此任务的要求,我无法转换字节[] 到一个字符串,它必须保持一个字节[]。 -- 提前感谢您的建议!

我们的任务是将加密密码存储到 byte[] 中,将 byte[] 写入文件,然后将 byte[] 读回。

此任务不需要java.util.Scanner

您可以使用OutputStream写入byte[]并使用InputStream读取byte[]

Files实用程序方法中也有读写byte[] arrays 的快捷方法:

  • 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()的情况下,它不会直接读取并返回一个字节作为原始字节。 相反,它读取文本并将下一个标记作为字节返回。 这是java.util.Scanner.nextByte(radix)的文档所说的(重点由我添加):

如果下一个标记与上面定义的 Integer 正则表达式匹配,则该标记被转换为字节值,就像通过删除所有区域设置特定前缀、组分隔符和区域设置特定后缀,然后通过 Character.digit 将非 ASCII 数字映射为 ASCII 数字,前置如果存在特定于语言环境的负前缀和后缀,则为负号 (-),并将结果字符串传递给具有指定基数的 Byte.parseByte。

因此,您需要做的是读取字符串并使用正确的字符集(通常为 UTF-8)将其转换为字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM