首页 > 代码库 > IO流的练习3 复制多级文件夹下的指定文件并改名
IO流的练习3 复制多级文件夹下的指定文件并改名
需求:复制指定目录下的指定文件,并修改后缀名。
指定的文件是:.java文件。
指定的后缀名是:.jad
数据源所在文件夹:C:\Users\Administrator\Desktop\记录
目的地所在文件夹:C:\Users\Administrator\Desktop\新建文件夹\copy
分析:
A:封装数据源的目录 B:封装目的地的目录
判断路径下的文件是否是文件夹
是:在目的文件夹下创建该文件,
获取数据源所在文件夹的所有文件的File数组
遍历File数组,得到每个文件的File对象
不是:再对其后缀进行判断是否是.java
是:进行改名并复制
不是:无视
代码:
1、首先写main方法:
1 public static void main(String[] args) throws IOException { 2 //封装目录 3 File start = new File("C:\\Users\\Administrator\\Desktop\\记录"); 4 File end = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\copy"); 5 6 //如果目的地文件夹不存在,则创建 7 if(!end.exists()){ 8 end.mkdir(); 9 }10 11 //复制文件夹12 copyFolder(start,end); 13 }
2、判断是否是文件夹,并对文件夹进行复制的方法
1 private static void copyFolder(File start, File end) throws IOException { 2 // 由于start是文件夹,所以开始不必获取File数组,直接进行判断 3 if(start.isDirectory()){ 4 //是文件夹 5 6 //首先在目的文件夹下创建不同路径,同样名称的文件夹 7 File newFolder = new File(end,start.getName()); 8 newFolder.mkdir(); 9 10 //获取该文件夹下的所有文件或文件夹的File数组11 File[] f = start.listFiles();12 for(File file : f){13 //再重新执行判断是否是文件夹14 copyFolder(file,newFolder);15 }16 17 }else{18 //是文件19 //判断是否是.java后缀的,是的话就改名,不是则丢掉20 String name = start.getName();21 if(name.endsWith(".java")){22 String newname = name.replace(".java", ".jad");23 File newfile = new File(end,newname);24 25 //进行复制26 copyfile(start,newfile);27 }
3、判断文件后缀是否是.java,并对它的数据进行复制
1 private static void copyfile(File start, File newfile) throws IOException { 2 //因为任意格式的,所以用缓冲字节流 3 BufferedInputStream bi = new BufferedInputStream(new FileInputStream(start)); 4 BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(newfile)); 5 6 //获取数据 7 byte[] by = new byte[1024]; 8 int len = 0; 9 while((len = bi.read(by)) != -1){10 bo.write(by,0,len);11 }12 bi.close();13 bo.close(); 14 }
IO流的练习3 复制多级文件夹下的指定文件并改名
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。