1. 复制指定目录下指定后缀名的文件并修改名称的案例
需求:复制指定目录下的指定文件,并修改后缀名。
• 指定的文件是:.java文件。
• 指定的后缀名是:.jad
• 指定的目录是:jad
数据源:e:\\java\\A.java
目的地:e:\\jad\\A.jad
分析:
A:封装目录
B:获取该目录下的java文件的File数组
C:遍历该File数组,得到每一个File对象
D:把该File进行复制
E:在目的地目录下改名
2. 代码示例:
1 package cn.itcast_04; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileOutputStream; 8 import java.io.FilenameFilter; 9 import java.io.IOException; 10 11 /* 12 * 需求:复制指定目录下的指定文件,并修改后缀名。 13 * 指定的文件是:.java文件。 14 * 指定的后缀名是:.jad 15 * 指定的目录是:jad 16 * 17 * 数据源:e:\\java\\A.java 18 * 目的地:e:\\jad\\A.jad 19 * 20 * 分析: 21 * A:封装目录 22 * B:获取该目录下的java文件的File数组 23 * C:遍历该File数组,得到每一个File对象 24 * D:把该File进行复制 25 * E:在目的地目录下改名 26 */ 27 public class CopyFolderDemo { 28 public static void main(String[] args) throws IOException { 29 // 封装目录 30 File srcFolder = new File("e:\\java"); 31 // 封装目的地 32 File destFolder = new File("e:\\jad"); 33 // 如果目的地目录不存在,就创建 34 if (!destFolder.exists()) { 35 destFolder.mkdir(); 36 } 37 38 // 获取该目录下的java文件的File数组 39 File[] fileArray = srcFolder.listFiles(new FilenameFilter() { 40 @Override 41 public boolean accept(File dir, String name) { 42 return new File(dir, name).isFile() && name.endsWith(".java"); 43 } 44 }); 45 46 // 遍历该File数组,得到每一个File对象 47 for (File file : fileArray) { 48 // System.out.println(file); 49 // 数据源:e:\\java\\DataTypeDemo.java 50 // 目的地:e:\\jad\\DataTypeDemo.java 51 String name = file.getName(); 52 File newFile = new File(destFolder, name); 53 copyFile(file, newFile); 54 } 55 56 // 在目的地目录下改名 57 File[] destFileArray = destFolder.listFiles(); 58 for (File destFile : destFileArray) { 59 // System.out.println(destFile); 60 // e:\jad\DataTypeDemo.java 61 // e:\\jad\\DataTypeDemo.jad 62 String name =destFile.getName(); //DataTypeDemo.java 63 String newName = name.replace(".java", ".jad");//DataTypeDemo.jad 64 65 File newFile = new File(destFolder,newName); 66 destFile.renameTo(newFile); 67 } 68 } 69 70 private static void copyFile(File file, File newFile) throws IOException { 71 BufferedInputStream bis = new BufferedInputStream(new FileInputStream( 72 file)); 73 BufferedOutputStream bos = new BufferedOutputStream( 74 new FileOutputStream(newFile)); 75 76 byte[] bys = new byte[1024]; 77 int len = 0; 78 while ((len = bis.read(bys)) != -1) { 79 bos.write(bys, 0, len); 80 } 81 82 bos.close(); 83 bis.close(); 84 } 85 }
运行效果,如下:
Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例
原文:http://www.cnblogs.com/hebao0514/p/4870285.html