文件复制小入门
复制原理图解
代码实现
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy {
public static void main(String[] args) {
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis = new FileInputStream("d:\\stream\\a.jpg");
fos=new FileOutputStream("e:\\"+System.currentTimeMillis()+".jpg");
byte[] bytes = new byte[1024];
int len;
while ((len=fis.read(bytes))!=-1){
fos.write(bytes,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}//IO流关闭顺序 先开的后关
finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
1.缓冲数组能有效提高IO的执行效率
2.IO流的关闭顺序:一般情况下是先打开的后关闭,另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b。当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法。如果将节点流关闭以后再关闭处理流,会抛出IO异常
3.复制完的文件的命名如过果写死则又可能名称冲突覆盖原有文件,建议用变量命名,例如System.currentTimeMillis(),用当前时间给文件命名,就不会出现命名冲突、