目录下指定类型的文件复制到另外一个目录
2013-07-18 00:18
519 查看
今天毕老师的视频说到写一个方法, 把一个目录下所有的指定类型的文件复制到另外一个目录, 赶紧暂停了视频, 试着自己写了一下, 毫无压力, 一次成功.
这个小程序把以前学的File方法和io操作都用到了, 挺有锻炼意义.
Ps: 谁知道怎么让代码中的注释变绿.
这个小程序把以前学的File方法和io操作都用到了, 挺有锻炼意义.
Ps: 谁知道怎么让代码中的注释变绿.
package com.day20; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; public class copy_the_file { static ppppp p = new ppppp(); //想偷懒做的替换, p.pln()=System.out.println() /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File dir_from = new File("D:\\test\\from"); //定义起始目录, 就是从这个目录开始搜索文件 File dir_to = new File("D:\\test\\to"); //定义目标目录, 就是把目标文件复制到这个目录 copyFile(dir_from, dir_to); //调用复制文件方法; } //复制文件方法, 里边调用了另外2个方法, ErgodicDirToLookingForJavaFile()和copy(),方法是干什么的看名字就知道了. public static void copyFile(File dir_from, File dir_to){ if(dir_from.canRead()){ //起始目录可读再继续,否则直接报错. if(dir_to.canWrite()){ //目标目录可写再继续,否则直接报错. 经测试, 在windowsXP中,把目标目录设置为只读, 仍然可以写文件, 不报错. ErgodicDirToLookingForJavaFile(dir_from); //该方法把目录下所有的.java文件添加到wantedFileList列表 for(File f:wantedFileList){ //循环复制列表每一个文件 try { copy(f, dir_to); } catch (FileNotFoundException e) { // TODO Auto-generated catch block // e.printStackTrace(); p.pln("您选择的文件 "+f+" 不存在."); } catch (IOException e) { // TODO Auto-generated catch block // e.printStackTrace(); p.pln("文件 "+f+" 复制失败."); } } } else{ p.pln("您输入的目标目录"+dir_to+"不可写."); } } else{ p.pln("您输入的起始目录"+dir_from+"不可读."); } } public static void ErgodicDirToLookingForJavaFile(File dir){ //使用listFiles(filter)方法筛选目录下的文件 File[] files = dir.listFiles(new FileFilter(){ //匿名内部类编写FileFilter @Override public boolean accept(File arg0) { // TODO Auto-generated method stub return arg0.toString().toLowerCase().endsWith(".java")||arg0.isDirectory(); //该FileFilter返回目录和所有以".java"结尾的文件 }}); for(File file:files){ if(!file.canRead()){ //此语句未经测试, 正常情况下不会报错. p.pln(file+"不可读, 跳过此文件."); continue; } else{ if(file.isDirectory()){ //如果是文件夹, 则递归调用本方法, 直到某个文件夹下不再有文件夹, 仅有文件 ErgodicDirToLookingForJavaFile(file); } else{ wantedFileList.add(file); //不是文件夹, 就添加到wantedFileList列表 } } } } //复制文件方法, 为了省事, 没有使用Reader, 使用了Stream, 通吃所有类型文件. public static void copy(File original_file, File dir_to) throws FileNotFoundException,IOException{ if(dir_to.canRead()){ String fileName = original_file.getName(); File goal_file = new File(dir_to+"\\"+fileName); BufferedInputStream bi = new BufferedInputStream(new FileInputStream(original_file)); BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(goal_file)); int num; while((num=bi.read())!=-1){ bo.write(num); } bi.close(); //忘记了是否需要关闭, 以防万一, 还是关闭了, 总是没有坏处, 下同. bo.close(); } else{ p.pln("您的目标目录 "+dir_to+" 没有读取权限."); } } static ArrayList<File> wantedFileList = new ArrayList<File>(); }
相关文章推荐
- 批处理 把文本中指定的文件从一个目录复制到另外一个目录
- python把文件从一个目录复制到另外一个目录,并且备份
- Linux复制指定目录及子目录下特定类型的文件
- C语言 递归地删除一个指定目录下所有指定类型的文件
- Java复制一个目录及其子目录的文件到另外一个目录
- 复制一个目录下的所有文件到另外一个目录(Java实现)
- MFC 目录选取,指定类型文件查找复制
- 怎样用Java复制一个文件到指定目录?
- [Shell]在一个目录及其子目录内的指定类型的文件中搜索某个字符串
- Ubuntu16 复制一个文件到指定目录下
- 不是使用C/C++函数如何复制文件到另外一个目录
- VBA遍历当前目录下指定类型的excel文件并复制文件内指定的内容到新表中
- Linux复制指定目录及子目录下特定类型的文件
- java中怎么把原始目录下的文件。复制到另外一个目录中,并且文件名不改掉
- shell 获取不同目录下指定文件,并把文件复制到一个文件夹下面
- 原来将一个文件复制到指定目录下如此简单
- MFC 遍历目录下指定类型的文件并复制
- IO流--指定一个盘符下的文件,把该文件复制到指定的目录下
- 复制一个目录下的所有文件到另外一个目录(Java实现)
- 两个delphi下遍历指定目录下指定类型文件的函数