ope*_*cks 5 java file java.util.scanner
我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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()
}
Run Code Online (Sandbox Code Playgroud)
有没有人对我可能做错了什么有任何想法?
编辑:我意识到我写了hasNext()而不是hasNextByte().但是,如果我这样做,它不打印任何东西.
Car*_*icz 10
为什么你想要使用扫描仪逐字节读取文件?这就像用手推车搬运口袋一样.(如果你真的需要一个独轮车换口袋,请告诉我,这样我才能成为你的朋友).
但严肃地说:类InputStream
简单可靠地从文件中读取字节,而不执行任何其他操作.
scanner
最近在Java API中引入了类,因此教科书示例可以将数据从文件中提取出来,而不是通常使用级联的数据new BufferedReader(new InputStream)
.它的专长是从自由格式的输入文件中输入数字和字符串.该nextByte()
方法实际上从输入流中读取一个或几个十进制数字(如果它们在那里)并将如此扫描的数字转换为单个字节值.
如果您正在读取字节,为什么要将它们输出为char
s?字节不是字符,蛮力互换在某些地方会失败.如果要查看这些字节的值,请按原样打印出来,您将看到0到255之间的小整数.
如果你想char
从文件中读取s,那FileReader
就是你的课程.
归档时间: |
|
查看次数: |
13717 次 |
最近记录: |