zoukankan      html  css  js  c++  java
  • IO流之字节流知识总结

         IO流分为字符流和字节流。

              字节流;可以读取任何文件,电脑以字节的方式储存

               字符流:用来读取字符。

      下面是我总结的思维导图。

        

    相关练习代码

    public class Demo {
    
        @Test
        public void fun() throws IOException {
            FileInputStream fis = new FileInputStream("zzz.txt");
           /* int read = fis.read();//从文件中读取一个字节
            System.out.println(read);
            int read2 = fis.read();//读取下一个
            System.out.println(read2);
            int read3 = fis.read();//读取下一个
            System.out.println(read3);//结果是-1说明文件的结束标记是-1*/
    
            FileOutputStream fos = new FileOutputStream("xxx.txt");//如果没有文件,会自动创建
            int b;
            while ((b = fis.read()) != -1) {
                fos.write(b);//将字节流写入文件
                System.out.println(b);//通过循环读取
            }
    
            fis.close();//关闭流
            fos.close();
        }
    
        //文件的追加
        @Test
        public void fun2() throws IOException {
            FileOutputStream fos = new FileOutputStream("zzz.txt", true);//文件的追加
            fos.write(98);
            fos.write(99);
            fos.close();
        }
    
        //文件的拷贝一个字节一个字节的拷贝
        @Test
        public void fun3() throws IOException {
            FileInputStream fis = new FileInputStream("592.jpg");//创建输入流
            FileOutputStream fos = new FileOutputStream("make/make/m/2.jpg", true);//输出流
            int b;
            while ((b = fis.read()) != -1) {
                fos.write(b);
            }
            fis.close();
            fos.close();
        }
    
        //利用字节数组拷贝
        //使用的是available方法获取文件长度
        //大文件都读取到自己数组,内存溢出
        @Test
        public void fun4() throws IOException {
            FileInputStream fis = new FileInputStream("592.jpg");
            FileOutputStream fos = new FileOutputStream("make/make/m/copy.jpg");
            byte[] bytes = new byte[fis.available()];
            fis.read(bytes);
            fos.write(bytes);
            fis.close();
            fos.close();
    
        }
    
        //标准小数组文件读取方式
        @Test
        public void fun5() throws IOException {
            FileInputStream fis = new FileInputStream("592.jpg");//输入流
            FileOutputStream fos = new FileOutputStream("make/make/m/copy2.jpg");//输出流
            byte[] bytes = new byte[1024 * 8];//小数组
            int len;
            while ((len = fis.read(bytes)) != -1) {
                fos.write(bytes, 0, len);
            }
    
            fis.close();
            fos.close();
        }
    
    
        //缓冲区文件读写
        @Test
        public void fun6() throws IOException {
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("592.jpg"));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("make/make/m/copy3.jpg"));
            int len;
            while ((len = bis.read()) != -1) {
                System.out.println(len);
                bos.write(len);
            }
    
            bis.close();
            bos.close();
        }
    
        //close方法包含刷新功能,关闭之前先将缓冲区写到文件中
        @Test
        public void fun7() throws IOException {
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("592.jpg"));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("make/make/m/copy4.jpg"));
            int len;
            while ((len = bis.read()) != -1) {
                bos.write(len);
                bos.flush();//刷新功能
            }
            bis.close();
            bos.close();
        }
    
        //字节流读写中文
        @Test
        public void fun8() throws IOException {
            FileOutputStream fos = new FileOutputStream("zzz.txt");
            fos.write("你好我是胡少君".getBytes());
            fos.close();
        }
    
        //标准的异常处理1.6及以前版本
        @Test
        public void fun9() throws IOException {
            FileInputStream fis = null;
            FileOutputStream fos = null;
    
            try {
                fis = new FileInputStream("xxx.txt");
                fos = new FileOutputStream("zzz.txt");
                byte[] bytes = new byte[1024 * 8];
                int len;
                while ((len = fis.read(bytes)) != -1) {
                    fos.write(bytes, 0, len);
                }
            } finally {
                try {
                    if (fis != null)
                        fis.close();
                } finally {
                    if (fos != null)
                        fos.close();
                }
            }
        }
    
        //1.7及以上版本
        @Test
        public void fun10() throws IOException {
            try (
                    FileInputStream fis = new FileInputStream("xxx.txt");
                    FileOutputStream fos = new FileOutputStream("zzz.txt");
            ) {
                byte[] bytes = new byte[1024 * 8];
                int len;
                while ((len = fis.read(bytes)) != -1) {
                    fos.write(bytes, 0, len);
                }
            }
        }
    
        @Test
        public void fun11() throws IOException{
    
            BufferedInputStream bis=new BufferedInputStream(new FileInputStream("make/make/m/jm.jpg"));
            BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("make/make/m/encode.jpg"));
            int len;
            while ((len=bis.read())!=-1){
                bos.write(len^123);//异或两次为本身
            }
            bis.close();
            bos.close();
        }
    }
    

      

  • 相关阅读:
    BOM和DOM
    前端CSS
    前端HTML
    索引 创建用户和授权 锁 事务
    多表查询 Naricat pymysql
    外键关联的修改 级联 修改表行记录的操作
    表的基础数据类型 MySQL的mod设置 表的约束
    数据库初识及操作命令
    LINUX 下LAMP之源码环境部署
    Nginx负载均衡配置实例详解【原】
  • 原文地址:https://www.cnblogs.com/bingshu/p/7101435.html
Copyright © 2011-2022 走看看