IO(字节流)

2019-02-18  本文已影响1人  黄同学2019

day20(IO(字节流))

1_IO流(IO流概述及其分类)

2_IO流(FileInputStream)

       FileInputStream fis = new FileInputStream("aaa.txt");    //创建一个文件输入流对象,并关联aaa.txt
   ​    int b;                                                  //定义变量,记录每次读到的字节
   ​    while((b = fis.read()) != -1) {                         //将每次读到的字节赋值给b并判断是否是-1
   ​        System.out.println(b);                              //打印每一个字节
   ​    }

    fis.close();                            //关闭流释放资源

3_IO流(read()方法返回值为什么是int)

4_IO流(FileOutputStream)

        FileOutputStream fos = new FileOutputStream("bbb.txt"); //如果没有bbb.txt,会创建出一个
    ​   //fos.write(97);                        //虽然写出的是一个int数,但是在写出的时候会将前面的24个0去掉,所以写出的是一个byte
    ​   fos.write(98);
    ​   fos.write(99);
    ​   fos.close();

5_IO流(FileOutputStream追加)

        FileOutputStream fos = new FileOutputStream("bbb.txt",true);    //如果没有bbb.txt,会创建出一个
    ​   //fos.write(97);                        //虽然写出的是一个int数,但是在写出的时候会将前面的24个0去掉,所以写出的一个byte
    ​   fos.write(98);
    ​   fos.write(99);
    ​   fos.close();

6_IO流(拷贝图片)

        FileInputStream fis = new FileInputStream("致青春.mp3");   //创建输入流对象,关联致青春.mp3
    ​   FileOutputStream fos = new FileOutputStream("copy.mp3");//创建输出流对象,关联copy.mp3
    ​   
        int b;
        while((b = fis.read()) != -1) {
            fos.write(b);
        }
        
        fis.close();
        fos.close();

7_IO流(拷贝音频文件画原理图)

8_IO流(字节数组拷贝之available()方法)

        FileInputStream fis = new FileInputStream("致青春.mp3");
    ​   FileOutputStream fos = new FileOutputStream("copy.mp3");
    ​   byte[] arr = new byte[fis.available()];                 //根据文件大小做一个字节数组
    ​   fis.read(arr);                                          //将文件上的所有字节读取到数组中
    ​   fos.write(arr);                                         //将数组中的所有字节一次写到了文件上
    ​   fis.close();
    ​   fos.close();

9_IO流(定义小数组)

10_IO流(定义小数组的标准格式)

                FileInputStream fis = new FileInputStream("致青春.mp3");
        FileOutputStream fos = new FileOutputStream("copy.mp3");
        int len;
        byte[] arr = new byte[1024 * 8];                    //自定义字节数组
        
        while((len = fis.read(arr)) != -1) {
        ​   //fos.write(arr);
        ​   fos.write(arr, 0, len);                         //写出字节数组写出有效个字节个数
        }
        
        fis.close();
        fos.close();

11_IO流(BufferedInputStream和BufferOutputStream拷贝)

        FileInputStream fis = new FileInputStream("致青春.mp3");           //创建文件输入流对象,关联致青春.mp3
    ​   BufferedInputStream bis = new BufferedInputStream(fis);         //创建缓冲区对fis装饰
    ​   FileOutputStream fos = new FileOutputStream("copy.mp3");        //创建输出流对象,关联copy.mp3
    ​   BufferedOutputStream bos = new BufferedOutputStream(fos);       //创建缓冲区对fos装饰
    ​   
        int b;
        while((b = bis.read()) != -1) {     
            bos.write(b);
        }
        
        bis.close();                        //只关装饰后的对象即可
        bos.close();

12_IO流(flush和close方法的区别)

13_IO流(字节流读写中文)

14_IO流(流的标准处理异常代码1.6版本及其以前)

        FileInputStream fis = null;
    ​   FileOutputStream fos = null;
    ​   try {
    ​       fis = new FileInputStream("aaa.txt");
    ​       fos = new FileOutputStream("bbb.txt");
    ​       int b;
    ​       while((b = fis.read()) != -1) {
    ​           fos.write(b);
    ​       }
    ​   } finally {
    ​       try {
    ​           if(fis != null)
    ​               fis.close();
    ​       }finally {
    ​           if(fos != null)
    ​               fos.close();
    ​       }
    ​   }

15_IO流(流的标准处理异常代码1.7版本)

        try(
    ​       FileInputStream fis = new FileInputStream("aaa.txt");
    ​       FileOutputStream fos = new FileOutputStream("bbb.txt");
    ​       MyClose mc = new MyClose();
    ​   ){
    ​       int b;
    ​       while((b = fis.read()) != -1) {
    ​           fos.write(b);
    ​       }
    ​   }

16_IO流(图片加密)

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.jpg"));
    ​   BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("b.jpg"));
    ​   
        int b;
        while((b = bis.read()) != -1) {
            bos.write(b ^ 123);
        }
        
        bis.close();
        bos.close();

17_IO流(拷贝文件)

        Scanner sc = new Scanner(System.in);
    ​   System.out.println("请输入一个文件路径");
    ​   String line = sc.nextLine();                //将键盘录入的文件路径存储在line中
    ​   File file = new File(line);                 //封装成File对象
    ​   FileInputStream fis = new FileInputStream(file);
    ​   FileOutputStream fos = new FileOutputStream(file.getName());
    ​   
        int len;
        byte[] arr = new byte[8192];                //定义缓冲区
        while((len = fis.read(arr)) != -1) {
            fos.write(arr,0,len);
        }
        
        fis.close();
        fos.close();

18_IO流(录入数据拷贝到文件)

   Scanner sc = new Scanner(System.in);
   ​    FileOutputStream fos = new FileOutputStream("text.txt");
   ​    System.out.println("请输入:");
   ​    while(true) {
   ​        String line = sc.nextLine();
   ​        if("quit".equals(line))
   ​            break;
   ​        fos.write(line.getBytes());
   ​        fos.write("\r\n".getBytes());
   ​    }
    fos.close();
上一篇 下一篇

猜你喜欢

热点阅读