IO流!!
流是一种实现数据交换技术的核心,比较常见的流使用在:文件操作、网络数据传输等,流由两大核心部分构成:input、output
对流的使用就分为两种操作:读、写
java中所有跟流有关的类都来自于java.io包
流的分类
java-IO将流分为几种类别:
1、按流向分:输入和输出
2、按类型分:字节和字符
3、按功能分:节点流和处理流
字节流
所谓字节流,其实就是将数据以字节为单位进行读写相关操作,字节流一般用于对一些二进制文件(图片,音频,视频等)进行读写操作,java中的字节流都来自以下两个抽象类
1.InputStream(字节输入流)
2.OutputStream(字节输出流)
InputStream类
InputStream类是所有字节输入流的父类,是一个抽象类,常用方法包含以下
-
available():获取当前流中的可读字节数
-
close():关闭此流
-
read():从流中读取一个字节,返回读取到的字节
-
read(byte[] b):将流中读取到的字节存入到指定的字节数组中,返回真实读取的长度,读取不到返回-1
-
read(byte[] b,int offset,int len):将流中读取的字节存入到指定的字节数组中(跳过offset个字节存储,存储长度为len),读取不到返回-1
常见子类有:FileInoutStream ByteArrayInputStream ObjectInputStream FilterInputStream
OutputStream类
OutputStream类是所有字节输出流的父类,是一个抽象类,常用方法如下:
-
write(byte[] b):将字节数组中的内容写入输出源(文件,网络,内存)
-
write(byte[] b,int offset,int len):将字节数组中的内容从offset开始写入len长到输出源
-
write(int b):将一个字节写入输出源
-
flush():将流中的数据强制刷新到输出源
-
close():关闭此流
常见子类有:FileOutputStream ByteArrayOutputStream ObjectOutputStream FilterOutputStream
字符流
字符流,是以字符的形式对输入输出源操作,通常情况下,一个字符表示两个字节,但是在以下unicode编码,如UTF-8则使用三个字节表示,但是由于字符流的特殊性,一般字符流主要操作一些文本输入输出源(文本文档,记事本等字符数据);java中所有的字符都从以下连个抽象类继承:
1.Reader字符输入流
2.Writer字符输出流
Reader
字符输入流,是所有字符输入流的父类,是一个抽象类,内部常见方法有:
-
read():读取并返回一个字符
-
read(char[] c):将从流中读取的字符存储到字符数组
-
read(char[] c,int offset,int len):将从流中读取的字符存入字符数组(跳过offset个字节,写入len长)
-
ready():返回此流是否准备好被读取的状态
-
close():关闭此流
常见子类有:InputStreamReader BufferedReader FilterReader PipedReader
常见间接子类: FileReader
Writer类
字符输出流,是所有字符输出流的父类,是是个抽象类,内部的常见方法如下
-
append(char c):向流中追加一个字符
-
append(CharSequence c):向流中追加一个字符序列(字符串)
-
witer(String s):写入一个字符串到目标输出源
-
witer(char[] c):写入字符数组到目标输出源
常见的子类有:OutStreamReader BufferedWriter FilterWriter PipedWriter
常见的间接子类:FileWriter
转换流、缓冲流、打印流
转换流
java-io中的转换流主要分为两个:
1.InputStreamReader 将字节流转换为字符流
2.OutputStreamWriter 将字符流转换为字节流
缓冲流
缓冲流的出现主要为了提高节点流的读取和写入效率。使用方式通常为将其他节点流包装起来
java-io包中的缓冲流分为以下几个:
1.BufferedReader
2.BufferedWriter
3.BufferedInputStream
4.BufferedOutputStream
打印流
在java-io包中还提供了两个特殊的流,这个两个流只有输出,没有输入
1.PrintStream 字节打印流
2.PrintWriter 字符打印流
打印流通常可以对其他输出流(Writer,OutputStream)以及文件(File)进行包装,然后通过提供的相关API操作这些流,常见构造器:
-
PrintStream
-
PrintStream(File file)
-
PrintStream(String fileName)
-
PrintStream(OutputStream os)
-
PrintStream(OutputStream os,boolean autoFlush)
-
-
PrintWriter
-
PrintWriter(File file)
-
PrintWriter(String fileName)
-
PrintWriter(OutputStream os)
-
PrintWriter(OutputStream os,boolean autoFlush)
-
PrintWriter(Writer w)
-
PrintWriter(Writer w,boolean autoFlush)
-