• IO流


    创建源 -> 选择流 -> 操作 -> 释放

    节点流 1.2.3.4.

    1.访问文件

    • FileInputStream
    • FileOutputStream
      //创建源
        File fileIn=new File("D:\note.txt");
        File fileOut=new File("D:\out.txt");
        //选择流
        FileInputStream fis=new FileInputStream(fileIn);
        FileOutputStream fos=new FileOutputStream(fileOut);
        //操作
         //中间容器
        byte[] flush=new byte[1024];
         //接受长度
        int len=0;
         //循环读取
        while((len=fis.read(flush))!=-1) {
         //写出
         fos.write(flush,0,len);
        }
        //释放
        fos.close();
        fis.close();
    
    • FileReader
    • FileWriter
    //创建源
    File fileIn=new File("D:\note.txt");
    File fileOut=new File("D:\out.txt");
    //选择流
    FileReader fr=new FileReader(fileIn);
    FileWriter fw=new FileWriter(fileOut);
    //操作
     //中间容器
    char[] flush=new char[1024];
     //接受长度
    int len=0;
     //循环读取
    while((len=fr.read(flush))!=-1) {
     //写出
     fw.write(flush,0,len);
    }
    //释放
    fw.close();
    fr.close(); 
    

    2.访问(字节/字符)数组

    • ByteArrayInputStream

    • ByteArrayOutputStream

    • CharArrrayReader

    • CharArrayWriter

    3.访问管道//?

    • PipedInputStream

    • PipedOutputStream

      (1)是线程间传输数据的一种方式 (2)PipedOutStream作为源点往管子写数据,PipedInputStream作为终点去读数据。这个Pipe是一块缓冲区。 (3)缓冲区类似于环形的缓冲区,但遇满就会阻塞停止写入。

    • PipedReader

    • PipedWriter

    4.访问字符串

    • StringReader
    • StringWriter
    //StringReader
         String s="当月色染云鬓成霜";
         StringReader sr=new StringReader(s);
         char[] flush=new char[1024];
         int len=0;
         while((len=sr.read(flush))!=-1) {
         System.out.println(new String(flush,0,len));
         }
         //StringWriter
         StringWriter sw=new StringWriter(); 
         sw.write("haha");
         sw.append(" lowlow ");
         sw.write("haha");
         System.out.println(sw.toString());//打印出haha lowlow haha
         //释放
         sr.close();
         sw.close();
    

    5.对象流

    • ObjectInputStream
    • ObjectOutputStream
    //ObjectOutputStream
         //创建流
         ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new               File("D:\out.txt")));
         //写入
         oos.writeDouble(123.456);
         oos.writeInt(369);
         oos.writeBoolean(true);
         oos.writeUTF("不约儿童");
         //释放
         oos.close();
    
        //ObjectInputStream
         //创建流
         ObjectInputStream ois=new ObjectInputStream(new FileInputStream(new                  File("D:\out.txt")));
         //读取(读与写的顺序一致)
         double d=ois.readDouble();
         int i=ois.readInt();
         boolean b=ois.readBoolean();
         String s=ois.readUTF();
         //释放
         ois.close();
    

    6.转换流

    • InputStreamReader

    • OutputStreamWriter

      字节流转字符流,可以编码解码

        //InputStreamReader
         File f=new File("D:\note.txt");
         InputStreamReader isr=new InputStreamReader(new FileInputStream(f),"gbk");
         char[] flush=new char[1024];
         while(isr.read(flush)!=-1) {
         System.out.println(new String(flush));
         }
         isr.close();
         //OutputStreamWrter
         File file=new File("D:\out.txt");
         OutputStreamWriter osw=
         new OutputStreamWriter(new FileOutputStream(file),"gbk");
         osw.append("什么妖魔鬼怪");
         osw.close();
    

    过滤器流

    7.缓冲流

    • 不带缓冲的操作,每读一个字节就要写入一个字节,由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低。
    • 带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里。等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多!
    • 所谓的buffer其实就是一个byte[]。 BufferedOutputStream的每一次write其实是将内容写入byte[],当buffer容量到达上限时,会触发真正的磁盘写入。 而另一种触发磁盘写入的办法就是调用flush(),BufferedOutputStream在close()时会自动flush 。

    • 关闭流时只关闭外层的处理流

    • BufferedInputStream
    • BufferedOutputStream
       //选择流
        BufferedInputStream bis=new BufferedInputstream(fis);
        BufferedOutputstream bos=new BufferedOutputStream(fos);
        //释放
        bos.close();
        bis.close();
    
    • BufferedReader
      • read(char[])
      • readLine()
    • BufferedWriter
    //选择流
        BufferedReader br=new BufferedReader(fr);
        BufferedWriter bw=new BufferedWriter(fw);
        String line;
         //循环读取:使用readLine()方法
        while((line=br.readLine())!=null) {
         //操作
         bw.write(line+"
    ");
        }
        //释放
         bw.close();
         br.close();
    

    8.数据流

    • DataInputStream

    • DataOutputStream

    只能处理基本类型和字符串,无法处理Object

    9.打印流

    • PrintStream

    写数据入文件方便,print()传入什么类型的数据,就会写入什么类型的数据

    PrintStream ps=new PrintStream(new  File("D:\out.txt"));
     ps.append("asd");
     ps.println(234);
     ps.append("nn");
     ps.close();
    

    10.推回输入流

    • PushbackInputStream

    • PushbackReader

    Pushback用于输入流允许字节被读取,然后返回(即“推回”)到流。

    //选择流
        	ByteArrayInputStream bais=new ByteArrayInputStream("abcdefg".getBytes());
        	PushbackInputStream pis=new PushbackInputStream(bais);
        	//操作
        	int len=0;
        	while((len=pis.read())!=-1) {
        		if((char)len=='d') {
        			pis.unread('s');
        		}
        		System.out.print((char)len);
        	}
        	//释放
        	pis.close();
    

    其他

    System.in/.out/.err/setIn()/setOut()

  • 相关阅读:
    js-20170816-Date对象
    js-20170804-Math对象
    js-20170619-string对象
    微信web开发者工具
    前端开发指南
    接口调试工具DHC
    CSS预处理器
    Weex
    Vue.js
    hbuilder
  • 原文地址:https://www.cnblogs.com/mznsndy/p/12051769.html
Copyright © 2020-2023  润新知