原标题:Java 流、File、scanner和IO
在编程中,我们经常需要用户参与,通过获取用户输入进行数据处理。而Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
1、读取控制台输入
Java 的控制台输入由 System.in 完成。
为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。
下面是创建 BufferedReader 的基本语法:
2、从控制台读取多字符输入
从 BufferedReader 对象读取一个字符要使用 read() 方法,它的语法如下:
每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException。
下面的程序示范了用 read() 方法从控制台不断读取字符直到用户输入 "q"。
3、从控制台读取字符串
从标准输入读取一个字符串需要使用 BufferedReader 的 readLine() 方法。
下面的程序读取和显示字符行直到你输入了单词"end"。
4、控制台输出
在此前已经介绍过,控制台的输出由 print( ) 和 println() 完成。这些方法都由类 PrintStream 定义,System.out 是该类对象的一个引用。PrintStream 继承了 OutputStream类,并且实现了方法 write()。这样,write() 也可以用来往控制台写操作。
PrintStream 定义 write() 的最简单格式如下所示:
实例
下面的例子用 write() 把字符 "A" 和紧跟着的换行符输出到屏幕:
下面将要讨论的两个重要的流是FileInputStream和 FileOutputStream:
5、FileInputStream
该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
有多种构造方法可用来创建对象。
可以使用字符串类型的文件名来创建一个输入流对象来读取文件
也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:
创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。
6、FileOutputStream
该类用来创建一个文件并向文件中写数据。
如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
有两个构造方法可以用来创建 FileOutputStream 对象。
使用字符串类型的文件名来创建一个输出流对象:
创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。
7、Java Scanner 类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
下面是创建 Scanner 对象的基本语法:
接下来我们演示一个最简单的的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
执行以上程序输出结果为:
next() 与 nextLine() 区别
next():
(1)、一定要读取到有效字符后才可以结束输入。
(2)、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
(3)、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
(1)、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
(2)、可以获得空白。
以上用法基本包含了与用户或文件交互的所有情况,对我们获取数据来源至关重要。返回搜狐,查看更多
责任编辑: