本帖最后由 abc784990536 于 2015-1-8 12:17 编辑
刚才看到一位学员的入学面试考题http://bbs.itheima.com/forum.php?mod=viewthread&tid=156391&extra=page%3D1,他一道题不会做,我试了下,请指教!
- package IO;
- 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;
- /*
- * 需求:编写一个程序,我想把这个目录下所有的带.java文件拷贝到另一个目录中,拷贝成功后,把后缀名是.java改成.txt
- * 指定的文件是:.java文件。
- * 指定的后缀名是:.txt
- * 指定的目录是:txt
- *
- * 数据源:e:\\java\\A.java
- * 目的地:e:\\txt\\A.txt
- *
- * 分析:
- * A:封装目录
- * B:获取该目录下的java文件的File数组
- * C:遍历该File数组,得到每一个File对象
- * D:把该File进行复制
- * E:在目的地目录下改名
- */
- public class CopyFolderDemo {
- public static void main(String[] args) throws IOException {
- // 封装目录
- File srcFolder = new File("e:\\java");
- // 封装目的地
- File destFolder = new File("e:\\txt");
- // 如果目的地目录不存在,就创建
- if (!destFolder.exists()) {
- destFolder.mkdir();
- }
- // 获取该目录下的java文件的File数组
- File[] fileArray = srcFolder.listFiles(new FilenameFilter() {
- @Override
- public boolean accept(File dir, String name) {
- return new File(dir, name).isFile() && name.endsWith(".java");
- }
- });
- // 遍历该File数组,得到每一个File对象
- for (File file : fileArray) {
- // System.out.println(file);
- // 数据源:e:\java\DataTypeDemo.java
- // 目的地:e:\\text\DataTypeDemo.java
- String name = file.getName();
- File newFile = new File(destFolder, name);
- copyFile(file, newFile);
- }
- // 在目的地目录下改名
- File[] destFileArray = destFolder.listFiles();
- for (File destFile : destFileArray) {
- // System.out.println(destFile);
- // e:\text\DataTypeDemo.java
- // e:\\text\\DataTypeDemo.text
- String name =destFile.getName(); //DataTypeDemo.java
- String newName = name.replace(".java", ".txt");//DataTypeDemo.jad
-
- File newFile = new File(destFolder,newName);
- destFile.renameTo(newFile);
- }
- }
- private static void copyFile(File file, File newFile) throws IOException {
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
- file));
- BufferedOutputStream bos = new BufferedOutputStream(
- new FileOutputStream(newFile));
- byte[] bys = new byte[1024];
- int len = 0;
- while ((len = bis.read(bys)) != -1) {
- bos.write(bys, 0, len);
- }
- bos.close();
- bis.close();
- }
- }
复制代码
|