1.2 字节流和字符流
要使用流类,必须导入Java.io包 。Java 2 定义了两种类型的流:字节类和字符类 。字节流(byte stream)为处理字节的输入和输出提供了方便的方法 。例如使用字节流读取或书写二进制数据 。字符流(character stream)为字符的输入和输出处理提供了方便 。它们采用了统一的编码标准 , 因而可以国际化 。在某些场合,字符流比字节流更有效 。在最底层,所有的输入/输出都是字节形式的 。基于字符的流只为处理字符提供方便有效的方法 。下面是对字节流和字符流的概述 。
1.2.1 字节流类
字节流由两个类层次结构定义 。在顶层有两个抽象类:InputStream 和 OutputStream 。每个抽象类都有多个具体的子类,这些子类对不同的外设进行处理,例如磁盘文件,网络连接,甚至是内存缓冲区 。字节流类显示于表1-1中 。
表1-1 字节流类
流类 含义
BufferedInputStream缓冲输入流
BufferedOutputStream缓冲输出流
ByteArrayInputStream从字节数组读取的输入流
ByteArrayOutputStream向字节数组写入的输出流
DataInputStream包含读取Java标准数据类型方法的输入流
DataOutputStream包含编写Java标准数据类型方法的输出流
FileInputStream读取文件的输入流
FileOutputStream写文件的输出流
FilterInputStream实现InputStream
FilterOutputStream实现OutputStream
InputStream描述流输入的抽象类
OutputStream描述流输出的抽象类
PipedInputStream输入管道
PipedOutputStream输出管道
PrintStream包含print()和println()的输出流
PushbackInputStream 支持向输入流返回一个字节的单字节的“unget”的输入流
RandomAccessFile支持随机文件输入/输出
SequenceInputStream两个或两个以上顺序读取的输入流组成的输入流
抽象类InputStream 和 OutputStream定义了实现其他流类的关键方法 。最重要的两种方法是read()和write(),它们分别对数据的字节进行读写 。两种方法都在InputStream 和OutputStream中被定义为抽象方法 。它们被派生的流类重载 。
1.2.2 字符流类
字符流类由两个类层次结构定义 。顶层有两个抽象类:Reader和Writer 。这些抽象类处理统一编码的字符流 。Java中这些类含有多个具体的子类 。字符流类如表1-2所示 。
表1-2 字符流的输入/输出类
抽象类Reader和Writer定义了几个实现其他流类的关键方法 。其中两个最重要的是read()和write(),它们分别进行字符数据的读和写 。这些方法被派生流类重载 。
1.3 预定义流
所有的Java程序自动导入java.lang包 。该包定义了一个名为System的类,该类封装了运行时环境的多个方面 。System 同时包含三个预定义的流变量 , in , out和err 。这些成员在System中是被定义成public 和static型的 , 这意味着它们可以不引用特定的System对象而被用于程序的其他部分 。
System.out是标准的输出流 。默认情况下 , 它是一个控制台 。System.in是标准输入,默认情况下,它指的是键盘 。System.err指的是标准错误流,它默认是控制台 。然而,这些流可以重定向到任何兼容的输入/输出设备 。System.in 是inputStream的对象;System.out和System.err是PrintStream的对象 。它们都是字节流,尽管它们用来读写外设的字符 。但可以用基于字符的流来包装它们 。
二、读取控制台输入
在Java 1.0中,完成控制台输入的惟一途径是字节流,使用该方法的老代码依然存在 。今天,运用字节流读取控制台输入在技术上仍是可行的,但这样做需要用到不被赞成的方法,这种做法不值得推荐 。Java 2中读取控制台输入的首选方法是字符流,它使程序容易符合国际标准并且易于维护 。
推荐阅读
- 移动直播设备多少钱,移动直播设备全套都有什么
- 百度如何推广软文,百度怎么推广app
- vmware虚拟机镜像,vmware虚拟机镜像格式
- stem建筑经营游戏,建筑经营类游戏排行
- c语言解线性方程组函数 c++线性方程组求解
- gis如何多选属性,gis属性表选择多个要素
- 别墅酒店拍照软件免费ios,酒店别墅设计图
- 快手直播伴侣模板怎么没有,快手直播伴侣直播为什么没有声音
- vb.net调用一个按键 vb单击窗体代码