今天是我们开学的第一天,老师给我们讲的Java流与文件操作,老师先带领我们复习了一下之前的内容,之后就开始学习新东西。下午,我们的新老师给我们开了一个班会,班会的主要是讲我们接下来升入大二的学习生活,接下来的生活会非常有意思的。
今天我们主要学习了:数据流分为输入流(InputStream)和输出流(OutputStream)两大类。输入流只能读不能写,而输出流只能写不能读。通常,程序中使用输入流读出数据,输出流写入数据,就好像数据流入到程序又从程序中流出。
缓冲流:
对数据流的每次操作都是以字节为单位进行的,既可以向输出流写入一个字节,也可从输入流中读取一个字节。显然,这样的数据传输效率太低。为提高数据的传输效率,通常使用缓冲流(Buffered Stream),即为一个流配有一个缓冲区(Buffer),一个缓冲区就是专门用于传送数据的一块内存。
当向一个缓冲流写入数据时,系统将数据先发送到缓冲区,而不是直接发送到设备。缓冲区自动记录数据,当缓冲区满时,系统将数据全部发送到相应的设备。
当从一个缓冲流中读取数据时,系统实际是从缓冲区中读取数据。当缓冲区空时,系统就会从相应的设备自动读取数据,并读取尽可能多的数据填充缓冲区。
缓冲区提高了内存与外部设备的数据传输效率。
Java的标准数据流:
标准的输入/输出是指在字符方式下程序与系统进行交互的方式。主要分为三种:
一、 标准的输入,对象是键盘。
二、 标准的输出,对象是显示器屏幕。
三、 标准的错误输出,对象是显示器屏幕。
Java通过系统类System实现标准的输入/输出功能。System类在java.lang包中,声明为一个final类。
Public final class System extends Object
System类不能创建对象,而是要直接使用。其中有3个成员,分别是in、out、err。
Public static final InputStream in
Public static final InputStream out
Public static final InputStream err
标准输入System.in
System.in作为字节输入流类InputStream的对象,实现标准的输入,使用read()方法从键盘接收数据。
标准输出System.out
System.out是打印流类PrintStream的对象,用来实现标准输出。其中有print()和println()两个方法,这两个方法支持参数为java的任意基本类型。
Public void print(参数)
Public void println(参数)
两者的区别在于:println()方法在输出时附加一个回车符,而print()方法则不附加输出回车符。
标准的错误输出System.err
System.err与System.out相同,以PrintStream类的对象err实现标准的错误输出。
InputStream类和OutputSystem类
字节输入流InputStream类
InputStream类是所有面向字节的输入流的父类,为java.io包中的抽象类。
InputStream类中声明了用于字节流输入的多个方法,包括读取数据、标记位置、获取数据量、关闭数据流等。
InputStream类的常用方法介绍:
read():从流中读入数据。
skip():跳过流中若干字节数。
available():返回流中可用字节数。
mark():在流中标记一个位置。
reset():返回标记过得位置。
markSupport():是否支持标记和复位操作。
close():关闭流。
字节输出流OutputSystem类
OutputSystem类是所有面向字节的输出流的父类,为java.io包中的抽象类。
OutputSystem类中声明了用于字节流输出的多个方法,包括读取数据、标记位置、获取数据量、关闭数据流等。