今天是我们开学的第一天,老师给我们讲的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类中声明了用于字节流输出的多个方法,包括读取数据、标记位置、获取数据量、关闭数据流等。