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();
}
}