IO分类:
按流向分:以应用为参照物看文件的流向。输入流,输出流。
按处理数据的单位分:字节流,字符流。抽象基类:InputStream,OutputStream;Read,Writer
按作用的角色分:节点流,处理流。
@Test /** * 复制操作 */ public void inputStreamtest(){ //被复制的路径文件 File file =new File("csq.properties"); //目的路径文件 File file1 =new File("csq1.properties"); if(file.exists()){ FileInputStream fis = null; FileOutputStream fis1 = null; try { //包裹原文件的处理流 fis=new FileInputStream(file); //包裹目标文件的处理流 fis1=new FileOutputStream(file1); //一个一个的写很耗时,写个数组做缓存,减少时间。将源文件的内容写入一个字节数组中。 byte[] s=new byte[8]; int leg;//每次读的长度。 if((leg=fis.read(s)) !=-1){//每次从数组中读的长度,特别是最后一次,如果最后一次只有5个字节,哪就长度不是8了。 fis1.write(s, 0, leg);//注意是从数组中读的长度。不是数组长度。特别是最后一次.
fis1.flush();//将最后一次强力推进去写入。
}
} catch (Exception e) {
e.printStackTrace();
} finally{//先关输入流,再关输出流
if(null !=fis){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(null !=fis1){
try {
fis1.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}else{
System.out.println("该文件不存在,请查找");
}
}