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();
        }
    }
    复制代码
     
  • 相关阅读:
    svn-Subversion
    英语学习-2020年4月
    自动化-研究
    数据库-存储过程
    未来软件测试的发展趋势
    学习alex---人生导师
    自动化测试-----总结
    接口测试总结
    jmeter-接口测试项目
    接口测试jmeter
  • 原文地址:https://www.cnblogs.com/hanease/p/15717329.html
Copyright © 2011-2022 走看看