spring资源访问利器之FileCopyUtils

实现文件的拷贝
package com.smart.resource;

import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.util.FileCopyUtils;

import java.io.File;
import java.io.FileOutputStream;

public class EncodedResourceExample {

    public static void main(String[] args) throws Throwable {
//      Resource res = new ClassPathResource("conf/file1.txt");
        Resource res = new ClassPathResource("conf/file2.txt");
        EncodedResource encRes = new EncodedResource(res, "UTF-8");
        String content = FileCopyUtils.copyToString(encRes.getReader());
        System.out.println(content);
        System.out.println("欢迎光临\r\n小A说JAVA"); //字符串换行

        //实现文件的拷贝把file2拷贝到file3

        try {
            FileOutputStream os = new FileOutputStream(new File("D:\\SourceCode\\My_Spring\\test\\src\\main\\resources\\conf\\file3.txt"));
            //注释的内容无法复制的原因
            //D:\SourceCode\My_Spring\test\target\classes\conf\file3.txt
//            Resource resourceOut = new ClassPathResource("conf/file3.txt");
            //D:\SourceCode\My_Spring\test\target\classes\conf\file3.txt
//            File file = resourceOut.getFile();
//            FileOutputStream os = new FileOutputStream(file.getAbsolutePath());
            Resource resource = new ClassPathResource("conf/file2.txt");
            FileCopyUtils.copy(resource.getInputStream(), os);
            System.out.print("SUCEESS");
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

}

提供了:

源码:

public abstract class FileCopyUtils {
    public static final int BUFFER_SIZE = 4096;

    public FileCopyUtils() {
    }

    public static int copy(File in, File out) throws IOException {
        Assert.notNull(in, "No input File specified");
        Assert.notNull(out, "No output File specified");
        return copy((InputStream)(new BufferedInputStream(new FileInputStream(in))), (OutputStream)(new BufferedOutputStream(new FileOutputStream(out))));
    }

    public static void copy(byte[] in, File out) throws IOException {
        Assert.notNull(in, "No input byte array specified");
        Assert.notNull(out, "No output File specified");
        ByteArrayInputStream inStream = new ByteArrayInputStream(in);
        OutputStream outStream = new BufferedOutputStream(new FileOutputStream(out));
        copy((InputStream)inStream, (OutputStream)outStream);
    }

    public static byte[] copyToByteArray(File in) throws IOException {
        Assert.notNull(in, "No input File specified");
        return copyToByteArray((InputStream)(new BufferedInputStream(new FileInputStream(in))));
    }

    public static int copy(InputStream in, OutputStream out) throws IOException {
        Assert.notNull(in, "No InputStream specified");
        Assert.notNull(out, "No OutputStream specified");

        int var2;
        try {
            var2 = StreamUtils.copy(in, out);
        } finally {
            try {
                in.close();
            } catch (IOException var12) {
                ;
            }

            try {
                out.close();
            } catch (IOException var11) {
                ;
            }

        }

        return var2;
    }

    public static void copy(byte[] in, OutputStream out) throws IOException {
        Assert.notNull(in, "No input byte array specified");
        Assert.notNull(out, "No OutputStream specified");

        try {
            out.write(in);
        } finally {
            try {
                out.close();
            } catch (IOException var8) {
                ;
            }

        }

    }

    public static byte[] copyToByteArray(InputStream in) throws IOException {
        ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
        copy((InputStream)in, (OutputStream)out);
        return out.toByteArray();
    }

    public static int copy(Reader in, Writer out) throws IOException {
        Assert.notNull(in, "No Reader specified");
        Assert.notNull(out, "No Writer specified");

        try {
            int byteCount = 0;
            char[] buffer = new char[4096];

            int bytesRead;
            for(boolean var4 = true; (bytesRead = in.read(buffer)) != -1; byteCount += bytesRead) {
                out.write(buffer, 0, bytesRead);
            }

            out.flush();
            int var5 = byteCount;
            return var5;
        } finally {
            try {
                in.close();
            } catch (IOException var15) {
                ;
            }

            try {
                out.close();
            } catch (IOException var14) {
                ;
            }

        }
    }

    public static void copy(String in, Writer out) throws IOException {
        Assert.notNull(in, "No input String specified");
        Assert.notNull(out, "No Writer specified");

        try {
            out.write(in);
        } finally {
            try {
                out.close();
            } catch (IOException var8) {
                ;
            }

        }

    }

    public static String copyToString(Reader in) throws IOException {
        StringWriter out = new StringWriter();
        copy((Reader)in, (Writer)out);
        return out.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/zhuhaoyu6666/article/details/88072032