说明
这里通过文件的复制来练习I/O流,这里用到的是字节型的文件流,即FileInputStream和FileOutputStream。
文件的复制
现在我要把我电脑上G盘的文件复制到电脑上的F盘中的test文件夹下,这个文件是test.txt,这里也可以复制其他文件,只要文件名和格式写对了就可以。看一下里面的内容,现在我的F盘的test文件夹里面是没有这个文件的。
代码
package TestFile;
import java.io.*;
public class CopyFile {
public void copy(File file,String path){
//file是要复制的文件,path是要复制到的路径
FileInputStream fis=null;
FileOutputStream fos=null;
try{
//创建一个输入流
fis=new FileInputStream(file);
//创建byte数组
byte[] b=new byte[1024];
//创建一个输出流,file的路径是所要复制到的路径加上原文件的名字
fos=new FileOutputStream(path+"//"+file.getName());
//读取文件中的信息
int count=fis.read(b);
//如果有读到字节,就开始写
while(count!=-1){
//读到多少,就写入多少
fos.write(b,0,count);
fos.flush();
count=fis.read(b);
}
System.out.println("复制完成!");
}catch(IOException e){
e.printStackTrace();
}finally{
//记得最后要关闭两个流,要分别捕获异常,保证健壮性
try{
if(fos!=null)
fos.close();
}catch(IOException e){
e.printStackTrace();
}
try{
if(fis!=null)
fis.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
在写一个主函数来测试一下
package TestFile;
import java.io.File;
public class MainTest {
public static void main(String[] args){
CopyFile cf=new CopyFile();
cf.copy(new File("G://test.txt"),"F://test");
}
}
结果
复制成功。其实代码没有特别多,多的是处理异常以及保证健壮性的部分。