java _io_文件的拷贝图片的拷贝可变参数try...with...resource面向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java _io_文件的拷贝图片的拷贝可变参数try...with...resource面向相关的知识,希望对你有一定的参考价值。

public static void close(Closeable... io) //可变参数,相当于数组

Closeable... io //可变参数,使用时相当于数组(for循环遍历)
Closeable 输入输出流实现的接口,在释放资源时使用
try...with..resource 自动释放资源工具
在try后接(is;os),其他的不变,会自动释放资源,不用管先后顺序(手动书写关闭时要先打开的后关闭)
try(InputStream iso=is;OutputStream oso=os)//jdk9以下需要手动写入流的声明
try(is;os) //jdk9以上自动生成流的声明

public class el 

public static void main(String[]args) 

    //文件拷贝
    try 
        InputStream is=new FileInputStream("C:\\Users\\10853\\eclipse-workspace\\hell\\src\\hell\\abc");
        OutputStream os =new FileOutputStream("D:/d/b.txt");

        copy(is,os);
     catch (FileNotFoundException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    
    byte[] data=null;
    //图片到字节数组
    try 
        InputStream is=new FileInputStream("C:\\Users\\10853\\eclipse-workspace\\hell\\linux学习路线.png");
        ByteArrayOutputStream os=new ByteArrayOutputStream();

        copy(is,os);
         data=os.toByteArray();
        System.out.println(data.length);
     catch (FileNotFoundException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    

//字节数组到文件
    try 

        ByteArrayInputStream is =new ByteArrayInputStream(data);
        OutputStream os=new FileOutputStream("D:/d/q"); 
    catch(FileNotFoundException e)
    
        e.printStackTrace();
    



public static void copy(InputStream is,OutputStream os) 
                                                   //释放资源工具,不用考虑顺序
    try(InputStream iso=is;OutputStream oso=os)    //用到了try...with...resource自动释放资源
                                                    //jdk版本9以上为try(is;os)
                                                    //jdk版本9以下需要重新声明流try(InputStream iso=is;OutputStream oso=os)
                                                    //

        byte[] flush=new byte[1024];
        int len=-1;
            while((len=is.read(flush))!=-1)
            
                os.write(flush,0,len);
                os.flush();
            
    catch(FileNotFoundException e)
    
        e.printStackTrace();
    catch(IOException e)
            
                e.printStackTrace();
            
        finally
        

            close(is,os);
        

    

//封装释放资源,用到了可变数组和输入输出流实现的接口Closeable
public static void close(Closeable... io) //可变参数,相当于数组

    for(Closeable i:io)
    
        try 
            if(null!=i) 
                i.close();
            
        catch(IOException e)
        
            e.printStackTrace();
        
    



以上是关于java _io_文件的拷贝图片的拷贝可变参数try...with...resource面向的主要内容,如果未能解决你的问题,请参考以下文章

java _io_commons 拷贝文件和网页内容

148_文件的拷贝

iOS 关于数组深拷贝 initWithArray:copyItems: 方法的讨论

Java IO编程——文件拷贝

拷贝一张图片,从一个目录到另外一个目录下(PS:是拷贝是不是移动)

Demo_通过JavaWeb完成文件下载