io流的手动封装,copy方法,close方法 以及使用try...with...resourse

io流的手动封装,copy方法,close方法 以及使用try…with…resourse

package cn.com.io;
import java.io.*;
public class FileUtils1 {
    public static void main(String[] args) {
        //文件到文件
//        try {
//            InputStream is = new FileInputStream("abc.txt");
//            OutputStream os = new FileOutputStream("abccopy.txt");
//            copy(is,os);
//        }catch(IOException e) {
//            e.printStackTrace();
//        }
        //文件到字节数组
        byte[] bytes = null;
        try {
            InputStream is = new FileInputStream("kt.jpg");
            OutputStream os =new ByteArrayOutputStream();
            copy(is,os);
            bytes = ((ByteArrayOutputStream) os).toByteArray();
            System.out.println(bytes.length);
        }catch(IOException e) {
            e.printStackTrace();
        }
        //字节数组到文件
        try {
            InputStream is = new ByteArrayInputStream(bytes);
            OutputStream os = new FileOutputStream("kt2.jpg");
            copy(is,os);
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
    public static void copy(InputStream is,OutputStream os) {
        byte[] bytes = new byte[1024*10];
        int tmp;
        try {
            while((tmp = is.read(bytes)) != -1) {
                os.write(bytes,0,tmp);
            }
            os.flush();
        }catch(IOException e) {
            e.printStackTrace();
        }finally {
            close(is,os);
        }
    }
    public static void close(InputStream is,OutputStream os) {
        try {
            if (os != null) {
                os.close();
            }
        }catch(IOException e) {
            e.printStackTrace();
        }

        try {
            if (is != null) {
                is.close();
            }
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
    public static void close2(Closeable... ios) {
        for (Closeable io: ios) {
            try {
                if (io != null) {
                    io.close();
                }
            }catch(IOException e) {
                e.printStackTrace();
            }
        }
    }
}

使用try…with…resourse 释放资源

package cn.com.io;

import java.io.*;

public class TestTryWithRes04_08 {
    //使用 try...with...resourse 关闭流
    public static void main(String[] args) {
        copy("src/cn/com/io/TestIo04.java","TestIo04.txt");
    }
    public static void copy(String src,String dest) {
        File srcfile = new File(src);
        File destfile = new File(dest);

        try(InputStream is = new FileInputStream(srcfile)
            ;OutputStream os = new FileOutputStream(destfile)) {
            byte[] flush = new byte[1024];
            int tmp;
            while((tmp = is.read(flush)) != -1) {
                os.write(flush,0,tmp);
            }
            os.flush();
        }catch(FileNotFoundException e) {
            e.printStackTrace();
        }catch(IOException e) {
            e.printStackTrace();
        }
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值