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\r\n";
            //字符串转字节数组
            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();
        }
    }
}

 

posted on 2019-07-21 19:41  Mentality  阅读(123)  评论(0编辑  收藏  举报