zoukankan      html  css  js  c++  java
  • IO流学习

    IO流学习

    步骤

    示例文件的读写操作

    往文件里写入数据

    package cn.Reader;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    /*
     * 写出文件
     */
    public class Demo02 {
        public static void main(String[] args) {
            //1.建立联系 File对象  目的地
            File dest=new File("C:/Users/Administrator/Desktop/sun/08_IO流技术/a.txt");
            //2.选择流,文件输出流  OutputStream FileOutputStream
            OutputStream os=null;
            //以追加形式写出文件
            try {
                os=new FileOutputStream(dest,true);      //true是追加,false是覆盖    
                //3.操作
                String str="very good
    ";
                //字符串转字节数组
                byte[] data=str.getBytes();
                os.write(data,0,data.length);
                
                os.flush();    //强制刷新出去
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                System.out.println("文件未找到");
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("文件写出失败");
            }
            finally {
                //释放资源
                try {
                    if(null!=os) {
                        os.close();
                    }
                }catch (Exception e2){
                    System.out.println("关闭输出流失败");
                }
                
            }
        }
    }

    读取数据

    package cn.Reader;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    
    /*
     * 文件的读取
     * 1.建立联系
     */
    public class Demo01 {
        public static void main(String[] args) {
            //1.建立联系 ,File对象
            File src=new File("C:/Users/Administrator/Desktop/sun/08_IO流技术/a.txt");
            //2.选择流
            InputStream is=null;  //提升作用域
            try {
                is=new FileInputStream(src);    //只要与外界建立联系就有异常
                //3.操作不断读取   缓冲数组
                byte[] car=new byte[1024];
                int len=0;    //接收实际读取的大小
                //循环读取
                while(-1!=(len=is.read(car))) {    //不是空,就不断读取     -1为空
                    //输出 字节数组    转成字符串
                    String info =new String(car,0,len);
                    System.out.println(info);
                    
                }
                
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                System.out.println("文件不存在");
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("读取文件失败");
            }
            finally {
                //释放资源
                try {
                    if(null!=is) {
                        is.close();
                    }
                }catch(Exception e2){
                    System.out.println("文件输入流关闭失败");
                }
                
            }
        }
    }

    文件拷贝操作

    package cn.Reader;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    /*
     * 拷贝文件
     */
    public class CopyFile {
        public static void main(String[] args)  {
            String src1="C:/Users/Administrator/Pictures/Saved Pictures/a.jpg";
            String dest1="C:/Users/Administrator/Pictures/Saved Pictures/100.jpg";
            try {
                CopyFiles(src1,dest1);
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("copy 失败");
            }
    
        }
        public static void CopyFiles(String srcPath,String destPath ) throws IOException {
            //1.建立联系 源(存在且为文件) +目的地(文件可以不存在)
    //        File src=new File("C:/Users/Administrator/Pictures/Saved Pictures/a.jpg");
    //        File dest =new File("C:/Users/Administrator/Pictures/Saved Pictures/100.jpg");
            File src=new File(srcPath);
            File dest =new File(destPath);
            //2.选择流
            InputStream  is =new FileInputStream(src);
            OutputStream os=new FileOutputStream(dest);
            //3.文件拷贝 循环 读取+写出
            byte[] flush=new byte[1024];
            int len=0; 
            //读取
            while(-1!=(len=is.read(flush))){
                //写出
                os.write(flush, 0, len); 
            }
            os.flush();  //强制刷出
            //关闭两个流 
            os.close();  //后打开的先关闭
            is.close();
            
        }
    }

    文件拷贝封装优化(可以是传字符串,也可以传File对象)

    package cn.Reader;
    /*
     * 文件操作
     * 拷贝
     */
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class FileUtil {
        public static void CopyFiles(String srcPath,String destPath ) throws IOException {
            CopyFiles(new File(srcPath),new File(srcPath));
        }
         
        //对该方法进行重载
        
        public static void CopyFiles(File  src,File dest ) throws IOException {
            if(!src.isFile()) {   //不是文件或者为null
                System.out.println("只能拷贝文件");
                throw new IOException("只能拷贝文件");
            }
    
            
            //2.选择流
            InputStream  is =new FileInputStream(src);
            OutputStream os=new FileOutputStream(dest);
            //3.文件拷贝 循环 读取+写出
            byte[] flush=new byte[1024];
            int len=0; 
            //读取
            while(-1!=(len=is.read(flush))){
                //写出
                os.write(flush, 0, len); 
            }
            os.flush();  //强制刷出
            //关闭两个流 
            os.close();  //后打开的先关闭
            is.close();
            
        }
        public static void main(String[] args) {
            File src=new File("C:/Users/Administrator/Pictures/Saved Pictures/a.jpg");
            File dest =new File("C:/Users/Administrator/Pictures/Saved Pictures/180.jpg");
            try {
                CopyFiles(src,dest);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    每天一个linux命令(8):scp使用
    C++11 列表初始化
    国外程序员整理的C++资源大全
    fiddler4 使用教程
    C++11 右值引用和转移语义
    数据库炸了——是谁动了我的wait_timeout
    Go组件学习——gorm四步带你搞定DB增删改查
    Go组件学习——cron定时器
    Go语言学习——channel的死锁其实没那么复杂
    Go语言学习——彻底弄懂return和defer的微妙关系
  • 原文地址:https://www.cnblogs.com/ssxblog/p/11222406.html
Copyright © 2011-2022 走看看