IO中那些流之文件复制

上一篇已经简单介绍了IO流,其实阿帕奇已经提供了很多第三方jar包,已经封装了IO流的功能,为我们简化了不少代码。但是我们了解一些原理,用起这些方法来也会得心应手的。

IO流实现将一个文件夹拷贝到另一个文件夹:

             思路:1.先对文件进行读取,然后在将文件写出

                         2 文件夹是不能复制的,只能对里面的文件进行复制

                         3.对文件夹我们可以进行创建。

     有的需要创建本地路径,   本地路径就是 创建Fie f=new File("number.txt");//任意一个文件名即可

       .

public static void copy(File source,File ss){
	  //这个是为了创建文件
	  int count=0;
	  File des=new File(ss,source.getName());
	  des.mkdirs();//G:\\英语\\学习
	  File[] listFiles = source.listFiles();
	
	  FileInputStream fis=null;
	  FileOutputStream fos=null;
	  for (File file : listFiles) {
		if(file.isDirectory()){	
			copy(file,des);   //进行递归,遍历里面的文件
		}else{                    //如果是文件向下执行
			try {
				//进行文件复制
				fis=new FileInputStream(file); //H:\\学习
				fos=new FileOutputStream(new File(des,file.getName()));//进行文件复制时源文件与目标文件文件结尾是相同的 
				byte[] b=new byte[1024];  //是以字节数组进行读取,比起一个字节一个字节的读,加快了速度
				int len=0;
				while((len=fis.read(b))!=-1){
					fos.write(b,0,len);
					
				}
			} catch (Exception e) {
				// TODO: handle exception
			}finally {
				try {
					fos.close();
					fis.close();
			}


如果这些不懂也没有关系,因为一些第三方jar包已经提供了这些功能。

     引进commons-io.jar
     1.加入classpath的第三方jar包内的class文件才能在项目中使用,创建lib文件夹,将commons-io.jar拷贝到lib文件夹。

     2.右键点击commons-io.jar,Build Path→Add to Build Pat

     它提供了一个处理文件操作的类:FilenameUtils。因为里面定义的是静态方法,可以直接使用类里面的方法。


常用方法:

         getExtension(String path) 获取文件的扩展名

         getName()             获取文件名

         isExtention    判断fileName是否以某个后缀名结尾


        readFileToString(File file):读取文件内容,并返回一个String;
        writeStringToFile(File file,String content):将内容content写入到file中;
        copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
        copyFile(File srcFile,File destFile);文件夹复制


     在项目中我们可能会涉及到上传文档的问题,有的会有要求,上传的文档不能超过多大,我们需要知道1KB就是1024。如果想要控制上传的扩展名,我们可以用getExtension来获取。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值