码迷,mamicode.com
首页 > 编程语言 > 详细

编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad

时间:2018-04-27 02:15:36      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:puts   替换   tor   Stub   row   class   了解   ati   write   

1.编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad

 

package copy;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class CopyTest {
           public static void main(String[] args) throws Exception {
            File file=new File("D:\\java");
            //判断目录是否存在
            if(!(file.exists()&&file.isDirectory())){
                throw new Exception("目录不存在");
            }
            // 找到文件夹下面的 .java 文件
            File[] files=file.listFiles(new FilenameFilter() {
                public boolean accept(File dir, String name) {
                    // TODO Auto-generated method stub
                    return name.endsWith(".java");
                }
            });
            System.out.println(files.length);
            // 复制文件
            // 找到目标目录
            File targetfile=new File("D:\\jad");
            //判断目录是否存在,不存在创建
            if(!(targetfile.exists()&&targetfile.isDirectory())){
                targetfile.mkdirs();
            }
            // 替换文件名字
            for(File f:files){
//                1.使用文件流实现文件复制
                String targetFilename=f.getName().replace(".java", ".jad");
//                FileInputStream in=new FileInputStream(f);
//                FileOutputStream out=new FileOutputStream(new File(targetfile,targetFilename));
//                copy(in,out);
//                2.使用缓冲流加快读写效率
                BufferedInputStream bis=new BufferedInputStream(new FileInputStream(f));
                BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(targetfile,targetFilename)));
                CopyDemo2(bis,bos);
            }
            
        }
           
           /**
            * 使用文件流实现文件复制
            * @author smy
            * @throws Exception 
            */
        public static void copy(InputStream in,OutputStream out) throws Exception{
            byte[] data = new byte[1024*10];
            int len = -1;
            while((len = in.read(data))!=-1){
                out.write(data,0,len);
            }    
            
            in.close();
            out.close();
        }
           
        /**
         * 使用缓冲流加快读写效率
         * 
         * 缓冲流是一对高级流,使用它们可以提高读
         * 写效率。
         * 
         * 高级流:高级流用来处理其他流,高级流不能
         * 独立存在,因为没有意义,使用高级流的目的
         * 是为了解决某些读写操作的复杂度。简化我们
         * 的读写操作。
         * 
         * 低级流:数据源明确,真实负责读写数据的流。
         * 
         * 读写操作一定需要低级流,但不一定非要使用
         * 高级流。
         * @author SMY
         * @throws Exception 
         */
        public static void CopyDemo2(InputStream bis,OutputStream bos) throws Exception{
            int d = -1;
            /*
             * 缓冲流内部维护了一个字节数组作为
             * 缓冲。当我们调用read()方法读取一个
             * 字节时,缓冲流会一次性读取若干字节
             * 并存入缓冲区,然后返回第一个字节,当
             * 我们再次调用read方法读取一个字节时,
             * 它会立即将缓冲区中第二个字节返回,
             * 直到所有字节都返回后,才会再次发生
             * 实际的读取操作,读取一组字节放入缓冲
             * 区。
             * 所以本质上还是通过一次读取若干字节,
             * 减少读取次数提高的读取效率。
             */
            while((d=bis.read())!=-1){
                bos.write(d);
            }
            bis.close();
            bos.close();    
        }
        
}

 

编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad

标签:puts   替换   tor   Stub   row   class   了解   ati   write   

原文地址:https://www.cnblogs.com/satisfysmy/p/8955776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!