文件的拷贝(必须掌握)
/**
* 文件拷贝
*/
public class FileUtils {
public static void main(String[] args) {
//文件到文件
try{
InputStream is = new FileInputStream("src/IO_study02/abc");
OutputStream os = new FileOutputStream("abc-copy");
copy(is,os);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
/**
* 文件到字节数组
* (1)文件到程序
* (2)程序到目的地
*/
byte[] datas = null;
try{
InputStream is = new FileInputStream("list.png");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
copy(is,baos);
datas = baos.toByteArray();
System.out.println(datas.length);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
/**
* 字节数组到文件
* (1)目的地到程序
* (2)程序到文件
*/
try {
InputStream is = new ByteArrayInputStream(datas);
OutputStream os = new FileOutputStream("list-copy.png");
copy(is,os);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void copy(InputStream is,OutputStream os){
try(is;os) { //try...with...resource释放资源
byte[] datas = new byte[1024];
int len = -1;
while ((len=is.read(datas))!=-1){
os.write(datas,0,len);
}
os.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}