2012-07-29 70 views
1

我还是一位新手java程序员。我正在学习Java IO,并注意到在本书以及在线教程中,他们都没有谈论扫描仪类。他们总是提到,创建输入/输出流读取器对象并将其用于读取或写入。了解Java IO

我对扫描仪类非常熟悉,阅读后我开始认为扫描仪不是读取java中控制台输入/文件的正确方法。

请澄清我的疑问,如果你能指点我一个容易理解的教程,它会很好。我已经查阅了oracle文档和其他热门网站。阅读赫伯特schildt的书&可怕的头第一个Java书(barf..barf)

+0

如果我没有记错,Scanner最适合读取人类可读形式的输入(例如,我想要System.in中的5个数字由用户输入,然后是一行文本,然后是两行十进制数字)。 (纠正我,如果我错了) – 2012-07-29 08:08:42

回答

0

扫描仪类是一个专门用于读取文本文件的特殊文件读取器。如果您想要读取其他文件类型,扫描仪类不是最佳的。 一个很好的概述可以在这里找到java i/o。总结表格有:

java.io包中包含许多类,您的程序可以用来读写数据。大多数类实现顺序访问流。顺序访问流可以分为两组:读取和写入字节的那些以及读取和写入Unicode字符的那些。每个顺序访问流都有一个特性,例如读取或写入文件,过滤数据作为其读取或写入,或序列化对象。

看完这个之后,你应该看看Apache Commons I/O哪些给你一些方便的I/O实用程序类。

1

你明白,a)有关Java的很多材料是多年前写的,而且Scanner是相对较新的。 b)在某些情况下扫描仪是正确的工具,但是在所有情况下,您都可以使用原始流作为二进制文件或读取器作为文本。

正如您怀疑Scanner是简单文本文档的正确选择。

你已经评估了你正在阅读的材料并给它上下文(就像它有多大)没有任何教程可以帮助你。 ;)

+0

我的一个宠物恨是StringBuffer。在Java 5.0(2004)中提供并推荐了一种替代方法,即StringBuilder,但现在仍然有人使用它。 :P – 2012-07-29 08:06:56

+1

自2004年以来,Scanner一直存在,这是Java生命周期的一半以上。 – EJP 2016-12-22 23:00:02

+0

@EJP虽然新图书馆需要很长时间才能成为标准的做事方式, – 2016-12-23 09:10:23

0

Java io包支持字节级别和字符级别操作。两者都可以在缓冲时尚完成。关于这些IO类型的例子可以在here找到。

扫描仪对象可用于将格式化输入分解为令牌并根据其数据类型转换单个令牌。 Scanner