zoukankan      html  css  js  c++  java
  • java基础知识回顾之javaIO类FileInputStream和FileOutputStream字节流复制图片

    java基础知识回顾之javaIO类---FileInputStream和FileOutputStream字节流复制图片

     
    复制代码
    package com.lp.ecjtu;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    
    /**
     * 
     * @author Administrator
     * 1.用字节读取流对象和图片相关联(输入流)
     * 2.用字节写入流对象创建一个图片文件。用于存储获取到的图片数据(输出流)
     * 3.通过循环读写,完成数据的储存
     * 4.关闭资源
     *
     */
    public class CopyPicStream {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            FileInputStream fis = null;
            FileOutputStream fos = null;
            try {
                fis = new FileInputStream("d:\\1.jpg");//读取图像数据之类的原始字节流
                fos = new FileOutputStream("2.bmp");//用于写入诸如图像数据之类的原始字节流
                byte[] b = new byte[1024];
                int len = 0;
                while ((len=fis.read(b)) != -1){
                    fos.write(b);
                }
            }catch (FileNotFoundException e) {
                e.printStackTrace();
            }catch (IOException e) {
                throw new RuntimeException("复制图片失败!");
            }finally{
                try {
                    if(fis != null){
                        fis.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    if(fos != null){
                        fos.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
    复制代码
     

    java基础知识回顾之javaIO类---InputStreamReader和OutputStreamWriter转化流

     

    InputStreamReader:是字节流通向字符流的桥梁;

    OutputStreamWriter 是字符流通向字节流的桥梁;

    复制代码
    package com.lp.ecjtu;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    
    public class SystemReadInKeyTranfer {
        /**
         * 1.源:键盘
         *  目的:控制台
         * 2.源:键盘录入:把键盘录入的数据存储到一个文件中
         * 目的:文件
         * 3.源:文件:将文件中的数据打印在控制台上
         * 目的:控制台
         * 流操作的基本流程:
         *   通过两个明确来完成
         *      1 明确源和目的
         *        源:输入流,InputStream Reader
         *        目的:输出流 :outputStream Writer
         *      2.操作的是否为纯文本
         *         是:字符流
         *         不是:字节流
         *      3.当体系明确后,在明确使用哪个具体的对象。
         *        通过来设备来区分:
         *            源设备:内存,硬盘,键盘
         *          目的:内存,硬盘,控制台
         *  1.将一个文本文件中的数据存储到另一个文件。复制文件。
         *     源:因为是源,所以使用读取流。InputStream Reader
         *     是文本文件:这是可以选择Reader
         *     明确设备:硬盘上的一个文件
         *     Reader体系中可以操作文件的FileReader
         *     是否提高效率,是,加入Reader体系中的BufferedReader
         *     FileReader fr = new FileReader("a.txt");
         *     BufferedReader buffr = new BufferedReader(fr);
         *     
         *     目的:outputStream Writer
         *     是否为纯文本,是!用字符流 Reader.
         *     设备:硬盘上的文件.
         *     Writer体系中可以操作文件的FileWriter
         *             是否提高效率,是,加入Writer体系中的BufferedWriter
         *     FileWriter fr = new FileWriter("a.txt");
         *     BufferedWriter buffr = new BufferedWriter(fr);
         *     
         *     2.将一个图片文件中的数据存储到另一个文件。复制文件。
         */
        public static void main(String[] args){
            
            BufferedReader bufferr = null;
            BufferedWriter bufferw = null;
            try {
                //将System.in->InputStream->Reader对象
                //将Reader对象包装成BufferedReader对象
      //键盘录入
     /*bufferr = 
        new BufferedReader(new InputStreamReader(System.in));
    
    //把键盘录入的数据存储到out.txt文件当中
     bufferw= 
        new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt")));
    */
                //将文件中的数据与bufferedReader相关联,InputStreamReader字节向字符转化的桥梁。
                    bufferr = 
                        new BufferedReader(new InputStreamReader(new FileInputStream("FileReaderDemo.java")));
                //将文件的数据打印到控制台,OutputStreamWriter字符向字节转化的桥梁
                    bufferw = new BufferedWriter(new OutputStreamWriter(System.out));
                String line = null;
                //采用循环的方式逐个读取
                    while((line=bufferr.readLine())!=null){
                        //如果读取的字符串为“over”的时候,则程序退出
                        if(line.equals("over")){
                            System.exit(-1);//或者用break
                        }
                        //打印读取的内容
                        //System.out.println(line.toUpperCase());
                        //使用字符输出流进行输出
                        bufferw.write(line.toUpperCase());
                        bufferw.newLine();//跨平台换行,不用'\r\n'
                        bufferw.flush();
                    }
                } catch (IOException e) {
                // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally{
                    try {
                            if(bufferr != null){
                                bufferr.close();
                            }
                            if(bufferw != null){
                                bufferw.close();
                            }
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    
                }
            
    }
    复制代码

    java基础知识回顾之javaIO类---BufferedInputStream和BufferedOutputStream

    MP3的复制过程:

    复制代码
    package com.lp.ecjtu;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    
    /**
     * 
     * @author Administrator
     * 演示MP3的复制
     * BufferedOutputStream
     * BufferedInputStream
     *
     */
    public class CopyMp3Stream {
    
        /**
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            long startTime = System.currentTimeMillis(); 
            copy_1();
            long endTime = System.currentTimeMillis();
            System.out.println("共耗费"+(endTime-startTime)+"毫秒");
        }
        
        public static void copy_1() throws IOException{
            //创建一个内部缓冲数组,读硬盘中的数据到缓冲区中,字节流缓冲区
            BufferedInputStream bufIos = new BufferedInputStream(new FileInputStream("D:\\1.mp3"));
            BufferedOutputStream buffos = new BufferedOutputStream(new FileOutputStream("2.mp3"));
            int by = 0;
            
            while((by=bufIos.read()) != -1){//读取缓冲区的数据到输入流中
                buffos.write(by);//对输出流进行写操作
            }
            buffos.close();
            bufIos.close();
        }
    }
    复制代码
     
  • 相关阅读:
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    flowable 获取当前任务流程图片的输入流
    最新 接口api插件 Swagger3 更新配置详解
    springboot 集成 activiti 流程引擎
    java 在线考试系统源码 springboot 在线教育 视频直播功能 支持手机端
    阿里 Nacos 注册中心 配置启动说明
    springboot 集成外部tomcat war包部署方式
    java 监听 redis 过期事件
    springcloudalibaba 组件版本关系
    java WebSocket 即时通讯配置使用说明
  • 原文地址:https://www.cnblogs.com/hanease/p/15717329.html
Copyright © 2011-2022 走看看