Java学习笔记—Java I/O系统(一)

时间:2023-02-14 23:38:58

根据Java编程思想学了一段时间,准备笔记写到博客上,算是一次复习。

Java I/O系统(一):概述

编程语言常用流来表示输入输出对象,这屏蔽了各种各样I/O设备的不同,提供了一致的数据I/O处理方法。

Java的I/O类主要有四个基类,两种类型。InputStream、OutputStream和Reader、Writer这两部分,前者主要是用于字节(8位)处理,后者用于字符(16位)处理。字符处理是计算机处理中的一种十分常用和重要类型(就像人类的语言),Java默认采用16位的Unicode字符,字节流处理的是8位的,不方便,所以在后来的版本中,Reader、Writer被加入其中,主要用来对字符的处理。他们是模仿InputStream和OutputStream设计的,所以其功能、接口是几乎相同的。


根据不同的作用对象,提供不同的I/O流类,这些流类算是基础的流,他们会被进一步修饰,使用修饰流,然后满足不同的输入输出需求。(比如格式,缓存)。

基本的作用对象、I/O流类有:字节数组=ByteArrayxxx、String对象=StringBufferxxx,文件=Filexxx、各种数据源(如网络),管道=Pipedxxx。xxx可以是InputStream、OutputStream,Reader、Writer,根据需要选择即可。

还有的就是:SequenceInputStream将不同的几个Stream放入其中,连续给几个位置输入数据。


关于Filterxxx,用它来包装上面基础的流,然后提供特定的功能,Dataxxx,Printxxx按基本的类型数据格式读写.Bufferedxxx,输入输出时不直接输入或输出,先放到缓存中。LineNumberxxx识别了行号,可以获取行数等。


几个要注意的地方和技巧:

(1)一般会优先选择使用Reader和Writer。

(2)PrintStream的使用有一些问题,如换行没有跨平台、使用PrintWriter代替他。

(3)按格式读取基本数据一般使用DataInputStream,没有相应的Reader(字节流扳回一局)。但读取一行时,一定不要使用DataInputStream,使用BufferReader。


特殊的:RandomAccessFile(叫随机文件读写器?)专门用于随机访问,读写文件的。注意只能用于文件。有几个特性(1)获取,设置当前处理的指针,位置。getFilePointer(),seek

,length等。(2)构造器中设置权限,读或者读写,注意没有只写。(3)搜索相关的功能。