java中将数据读写抽象成流,像水流一样,从而可以方便地扩展。其中重要的几个类:
①抽象类InputStream, OutputStream,它们是原始抽象类。其中InputStream的方法包括read() 从流中读取数据; skip() 跳过一定的字节; available() 返回可用的字节数; mark() 标记一个位置; reset() 返回上一个标记位; marksupport() 是否支持标记复位; close() 关闭流。 其中read() 可以逐字节读,也可加入缓存数组从而更高效地读取。OutputStream的方法包括 write(), 参数类似于read(); flush() 刷空此流; close() 关闭流。
②FileInputStream FileOutputStream 它们用于读写顺序文件。 其中FileInputSteam 打开输入文件, 需要捕获一个FileNotFoundException。FileOutputSteam 打开只读文件时有IOException。
③随机访问文件类 RandomAccessFile ,它比较特殊,直接继承自Object类,并且实现了接口DataInput 和 DataOutput ,可以成组地读取字节。方法有Read[数据类型]() , Write[数据类型](), ReadLine(), SkipBytes), length,getFilePointer(),seek等。
④过滤字节流。FilterInput/OutputStream, 可以对其他缓冲流数据流进行处理。
一类是带缓冲的:BufferedInput/OutputStream, 可以把任意IO流捆绑在其上,提高效率;
另一类是数据过滤:DataInputStream ,它是顺序的数据流。
⑤管道流,必须输入和输出并用,作用是在两个线程之间实现数据传输。
顺序是 管道输出流 ---> 管道pipe ---> 管道输入流
连接方法两种:1 PipedInputStream(PipedOutputStream pos) 或反过来,io其中一个连接了即可。
2 connect(PipedOutputStream pos)
⑥内存读写流,ByteArrayInputStream ByteArrayOutputStream
⑦序列输入流 将几个输入流顺序连接在一起