gpt4 book ai didi

java - 使用 java.util.Scanner 逐字节读取文件

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:31 26 4
gpt4 key购买 nike

我正在尝试使用 java.util.Scanner 逐个字符地读取一行文件。但是我遇到了这个异常”:

Exception in thread "main" java.util.InputMismatchException: For input string: "contents of my file"
at java.util.Scanner.nextByte(Scanner.java:1861)
at java.util.Scanner.nextByte(Scanner.java:1814)
at p008.main(p008.java:18) <-- line where I do scanner.nextByte()

这是我的代码:

public static void main(String[] args) throws FileNotFoundException {
File source = new File("file.txt");
Scanner scanner = new Scanner(source);
while(scanner.hasNext()) {
System.out.println((char)scanner.nextByte());
}
scanner.close()
}

有人知道我可能做错了什么吗?

编辑:我意识到我写的是 hasNext() 而不是 hasNextByte()。但是,如果我这样做,它不会打印出任何内容。

最佳答案

到底为什么要使用扫描仪逐字节读取文件?这就像使用手推车运送您的零钱。 (如果您真的需要手推车来找零钱,请告诉我,我可以成为您的 friend )。

但严肃地说:InputStream 类简​​单可靠地从文件中读取字节,除此之外什么都不做。

scanner 类最近被引入到 Java API 中,因此教科书示例可以从文件中提取数据,比通常使用 new BufferedReader(new InputStream) 的级联要轻松得多。它的专长是从自由格式的输入文件中输入数字和字符串。 nextByte() 方法实际上从输入流中读取一位或几位十进制数字(如果它们存在)并将扫描到的数字转换为单个字节值。

如果您正在读取字节,为什么要将它们输出为 char?字节不是字符,暴力互换在某些地方会失败。如果您想查看这些字节的值,请按原样打印它们,您会看到 0 到 255 之间的小整数。

如果您想从文件中读取charFileReader 是适合您的类。

关于java - 使用 java.util.Scanner 逐字节读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2039229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com