文件夹复制,通过配置文件来更改条件
来源:互联网 发布:粉红色的火烈鸟知乎 编辑:程序博客网 时间:2024/05/16 13:45
java-文件夹复制,通过配置文件来更改条件
功能:复制文件夹
要求:1、复制文件夹,及路径下所有文件到指定的路径。
2、选择性复制,对于路径下所有的文件,可以选择性的复制,指定的文件类型就不复制。
3、通过配置文件来修改不需要的文件类型,源目录和目的目录的路径。
4、配置文件示意图
思路:1、写一个复制文件的方法。
2、写一个文件遍历的方法。
3、在文件复制的时候,判断是不是药复制的文件,那么就需要一个过滤器。所以还有写一个过滤方法。
4、由于我们需要过滤的文件类型后缀全部在配置文件中,所以我们还需要定义一个方法,来判断当前文件类型是不是在配置文件中。
5、既然上面都说需要读取配置文件,那么我们就需要通过流来读取配置文件的内容。然后将读取的文件,返回成字符串。
说明:1、整个程序分别在两个文件中,所以到时候要注意是两个文件。主文件是:CopyDir.java。子文件是:RecognitionFileType.java。
2、我的程序使用的JDK版本1.7版本。编译器eclipse,使用系统是windows 7 -64bit。包名:copyfileall
3、程序中,很多程序都只是注释掉了,但是没有删除。因为我觉得也许对你们帮助,所以有些我就没有删除掉。
代码部分:
第一部分(注:这部分的代码全部是在一个.java文件中,文件名:CopyDir.java)
package copyfileall;/* * 实现复制目录 */import java.io.*;import sun.font.CreatedFontTracker;/* * 功能:实现过滤器,需要过滤的对象,通过调用RecognitionFile方法, * 读取配置文件来确定需要过滤的文件类型。 */class FileFilterAvi implements FileFilter {/* * accept 是listFiles()方法负责调用,传递参数过来 参数,就是listFiles方法获取到的全路径 * 如果accept方法返回真,获取这个文件 返回假,就放弃这个文件 文件的全路径,判断出文件名是不是.avi的,如果是返回true */public boolean accept(File pathname) {// return !pathname.getName().endsWith(".avi") &&// !pathname.isDirectory();// 创建一个读取配置文件的对象RecognitionFileType rft = new RecognitionFileType();// 传入文件类型,并且读取配置文件中,需要过滤文件的后缀return rft.RecognitionFile(pathname);/* * return !pathname.getName().endsWith(".avi") && * !pathname.getName().endsWith(".docx") && * !pathname.getName().endsWith(".jpg") && * !pathname.getName().endsWith(".txt1") && * !pathname.getName().endsWith(".doc") && * !pathname.getName().endsWith(".rar") && * !pathname.getName().endsWith(".zip"); */}}public class CopyDir {public static void main(String[] args) {// 创建一个读取配置文件的对象RecognitionFileType rft = new RecognitionFileType();// 读取配置文件中的源目录的路径String sourceDirectory = rft.ReadConfigurationFile("sourceDirectory").replace("\\", "\\\\");// 读取配置文件中的目的目录的路径String destinationDirectory = rft.ReadConfigurationFile("destinationDirectory").replace("\\", "\\\\");// System.out.println(sourceDirectory);// System.out.println(rft.ReadConfigurationFile("destinationDirectory"));// 将源目录和目的目录路径传入方法中,并且调用复制方法ergodicDir(new File(sourceDirectory), new File(destinationDirectory));// ergodicDir(new// File("C:\\Users\\Administrator\\Desktop\\java学习\\文件接收柜"),new// File("f:"));/* * File file = new File("f:","asd"); if(file.mkdir()) * System.out.println("yes"); */// File file = new File("f:\\qwe\\1.txt");/* * File file1 = new File("f:\\qwe\\aa\\11.txt"); * file1.getParentFile().getName(); // file.mkdir(); * System.out.println(file1.getParentFile().getName()); */}/* * 定义方法,实现目录的复制,接收数据源和数据目的 */private static void copyDir(File source, File target) {// 获取数据源目录名字 getNameString dirName = source.getParentFile().getName();// System.out.println(dirName);// 将数据目的d: 和目录名组合成File对象,创建同名文件夹File targetDir = new File(target, dirName);// System.out.println(targetDir);// mkdirs创建目录targetDir.mkdir();// 遍历数据源,获取数据源目录下的全部文件// File[] sourceFile = source.getParentFile().listFiles(new// FileFilterAvi());// for(File f : sourceFile){// 获取数据源文件名String fileName = source.getName();// 将文件名和目标文件夹,组合成新的File对象File newFile = new File(targetDir, fileName);// System.out.println(f);// System.out.println(newFile);// IO流读写文件 FileInputStream,FileInputStream 构造器都接收File对象// System.out.println("...."+newFile);// 显示已经复制文件的路径System.out.println("...." + newFile);// 调用文件复制方法copyFile(source, newFile);// }}/** * 功能:复制文件, */private static void copyFile(File soruce, File target) {// 字节数组缓冲创建FileInputStream fis = null;FileOutputStream fos = null;try {// 创建流对象fis = new FileInputStream(soruce);fos = new FileOutputStream(target);// System.out.println(soruce);// System.out.println(target);// 创建一个字节数组缓冲区byte[] bytes = new byte[1024];int len = 0;// 循环读取字节数组while ((len = fis.read(bytes)) != -1) {fos.write(bytes, 0, len);}} catch (IOException e) {throw new RuntimeException("复制失败");} finally {try {if (fos != null)fos.close();} catch (IOException e) {} finally {try {if (fis != null)fis.close();} catch (IOException e) {}}}}/** * 遍历文件夹 */private static void ergodicDir(File dir, File target) {// System.out.println(dir+".....");// 判断目的目录是不是存在,如果不存在就创建目录if (!target.exists())target.mkdir();// 先获取dir路径下的全部内容File[] files = dir.listFiles(new FileFilterAvi());for (File f : files) {if (f.isDirectory()) {// 获取数据源目录名字 getName// String dirName = f.getName();// System.out.println(dirName);// 将数据目的d: 和目录名组合成File对象,创建同名文件夹File targetDir = new File(target, f.getParentFile().getName());// System.out.println(targetDir);// mkdirs创建目录targetDir.mkdirs();// System.out.println("jinlai "+targetDir);ergodicDir(f, targetDir);} else {// System.out.println(dir+" 111111");copyDir(f, target);}}}}
第二部分(注:这部分的代码全部是在另一个.java文件中,文件名:RecognitionFileType.java)package copyfileall;import java.io.File;import java.io.FileInputStream;import java.util.Properties;public class RecognitionFileType {/* * 功能:读取配置文件,根据传入的参数,并且返回读取的字符串 * */public static String ReadConfigurationFile(String name) {try {// 流读取配置文件FileInputStream fis = new FileInputStream("f:\\config.txt");// 创建集合对象Properties pro = new Properties();// load方法pro.load(fis);// for (int i = 1; i <= pro.size() / 2; i++) {String classN = pro.getProperty(name);return classN;// Class clazz = Class.forName(classN);// Object obj clazz.newInstance();// Method m = clazz.getMethod(name, parameterTypes)// System.out.println(classN);// }} catch (Exception e) {}return null;/* * !pathname.getName().endsWith(".avi") && * !pathname.getName().endsWith(".docx") && * !pathname.getName().endsWith(".jpg") && * !pathname.getName().endsWith(".txt1") && * !pathname.getName().endsWith(".doc") && * !pathname.getName().endsWith(".rar") && * !pathname.getName().endsWith(".zip"); */}public static boolean RecognitionFile(File fileName){//读取配置文件中的需要过滤的文件后缀String fileSuffix = ReadConfigurationFile("fileSuffix" );//将读取的字符串,拆分成单独的文件后缀String[] str = fileSuffix.split(" +");boolean flag = true;if(str == null)return flag;for(int i = 0 ; i < str.length ; i++){flag = flag && !fileName.getName().endsWith(str[i]);}return flag;}}
运行结果:运行结果会将复制成功的文件现在出来。
文件下载:如果需要下载源文件的童鞋,下载地址:http://download.csdn.net/detail/lmh820822/8465413
0 0
- 文件夹复制,通过配置文件来更改条件
- mysql通过直接复制数据库文件夹来还原数据时需要注意的问题
- mysql通过直接复制数据库文件夹来还原数据时需要注意的问题
- DELPHI 通过ZLib来压缩文件夹
- 通过ConfigurationSection来轻松地加载配置文件
- 通过ConfigurationSection来轻松地加载配置文件
- WCF :通过配置文件来托管服务
- 通过ConfigurationSection来轻松地加载配置文件
- 通过ConfigurationSection来轻松地加载配置文件
- 通过反射读取配置文件,来打印图形
- Apache通过更改配置文件实现url跳转和域名跳转
- 用TC来实现只复制文件夹而不复制文件夹中的内容
- CMD命令 (复制、移动、重命名) (文件夹、子文件夹)下所有符合条件的文件
- 通过序列化来判断一个对象是否已经更改
- 通过修改源码来更改nginx的日期格式
- 通过修改注册表来更改系统签名认证权限
- 通过反射的方式来更改dialog中文字大小、颜色
- MYSQL通过复制DATA文件夹内容恢复数据
- JBoss7.1.1配置成windows启动服务
- 缓慢地成长的步伐
- LUA脚本语言
- POJ 计算几何入门题目推荐
- E430C基本完美安装OS X Yosemite 10.10 MAS 14A389
- 文件夹复制,通过配置文件来更改条件
- 回溯算法
- A and B and Interesting Substrings(学习利用map容器提高效率的技巧)
- java中的IO整理
- 快速幂
- 玩转AWK
- TextView实现圆角效果.
- 模运算
- UILabel加删除线