安传输内容分类
- 字节流(结尾都是Stream)
- 读到一个字节就返回一个字节
- 用来处理所有类型数据,如:图片,MP3,AVI视频文件
- 字符流(结尾都是Reader或Writer)
- 读到一个或多个字节(在UTF-8码表中是3个字节)时,先去查指定的编码表,将查到的字符返回
- 只能处理字符数据
安传输方向分类
- 输入流
- 输出流
安功能分类
-
节点流
有读取和写入的介质,是真正的流(流的类名称都用介质打头)介质 字节流 字符流 File(文件) FileInputStream/FileOutputSream FileReader/FileWriter Memory Array ByteArrayInputStream/ByteArrayOutputSream CharArrayReader/CharArrayWriter Memory String XXXX StringReader/StringWriter Pipe(管道) PipedInputSream/PipedOutputSream PipedReader/PipedWriter -
处理流
- 特点
- 处理流是对一个已存在的流的封装和连接(两个流对接)
- 构造方法参数总要传入一个已有的流对象
- 分类
-
缓冲流(BufferedInPutStream/BufferedOutPutStream和BufferedWriter/BufferedReader)
可以提高对流的操作效率BufferedWriter bufw=new BufferedWriter(new FileWriter("buf.txt")); BufferedReader bufr=new BufferedReader(new FileReader("buf.txt"));
-
转换流(InputStreamReader/OutputStreamWriter)
它是字节流和字符流之间的桥梁InputStreamReader(InputStream,String charSet); OutputStreamwriter(OutputStream,String charSet);
-
数据流(DataInputStream/DataOutputStream)
可以方便对一些基本类型数据进行直接的存储和读取(通常只要操作基本类型的数据就需要数据流)DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("data.txt"))); String str="你好hi"; dos.writeUTF(str);//按UTF-8格式写入 dos.writeChars(str);//按字符写入 dos.writeBytes(str);//将整个字符串按字节写入
-
打印流(PrintStream/PrintWriter)
System.out对应的类型就是PrintStream -
对象流(ObjectInputStream/ObjectOutputStream)
用来把对象作为一个整体进行存取transient double score;//transient关键字的作用是,对象序列化时该属性无效 void writeObject(Object);//被写入的对象必须实现一个接口:Serializable,否则就会抛出:NotSerializableException
-
- 特点
-
RandomAccessFile类
- 该对象并不是流体系中的一员
- 它封装了字节流,同时还封装了一个缓冲区(字符数组),通过内部的指针来操作字符数组中的数据
- 该对象只能操作文件
- 既可以对文件进行读操作,也能进行写操
- 可以用于多线程下载或多个线程同时写数据到文件