zoukankan      html  css  js  c++  java
  • Java:IO/NIO篇,利用NIO遍历目录示范(示范:有选择地从光盘拷贝文件)

    1. 问题

    买了本《Android开发实战经典》书,附带光盘中有很多视频等内容,居然有两张DVD那么大,我想把光盘中的源代码部分拷贝到硬盘中,这样查看方便,但忽略某些文件(如:视频,过大的文件等)。

    2. 解决

    写了如下程序,功能就是将光盘目录完整拷贝到硬盘指定目录,但忽略某些文件(如:视频,过大的文件等)。

    package com.clzhang.sample.nio;
    
    import java.io.*;
    import java.nio.file.*;
    import java.nio.file.attribute.*;
    
    /**
     * 将整个光盘的内容拷贝到硬盘指定目录中,忽略某些文件(视频、可执行文件等)
     * 
     * @author acer
     * 
     */
    public class CopyFilesFromCD {
        private String srcDrive = "E:";
        private String destDirRoot = "D:\\MyDocuments\\Study\\android\\";
    
        public void process() throws Exception {
    
            // 遍历CD目录下的所有文件和子目录
            Files.walkFileTree(Paths.get(srcDrive), new SimpleFileVisitor<Path>() {
                // 访问文件时候触发该方法
                @Override
                public FileVisitResult visitFile(Path file,
                        BasicFileAttributes attrs) throws IOException {
                    String srcFile = file.toString().substring(2);
                    
                    // 忽略可执行文件、视频及特定的文件
                    if (srcFile.endsWith(".exe") || srcFile.endsWith(".wmv")
                            || srcFile.contains("[讲师 MLDN李兴华]")) {
                        System.out.println("忽略:" + file);
                    } else {
                        // 拷贝
                        System.out.println("正在拷贝:" + file);
                        String destFile = destDirRoot + srcFile;
    
                        // 是否需要程序手工关闭输出流?
                        FileOutputStream fout = new FileOutputStream(destFile);
                        Files.copy(file, fout);
                        fout.close();
                        
                        //Files.copy(file, new FileOutputStream(destFile));
    
                    }
                    
                    return FileVisitResult.CONTINUE;
                }
    
                // 开始访问目录时触发该方法
                @Override
                public FileVisitResult preVisitDirectory(Path dir,
                        BasicFileAttributes attrs) throws IOException {
                    // 创建目标路径,存在与否不管
                    String srcDir = dir.toString().substring(2);
                    String destDir = destDirRoot + srcDir;
                    File file = new File(destDir);
                    if (!file.exists()) {
                        file.mkdirs();
                    }
    
                    return FileVisitResult.CONTINUE;
                }
            });
    
            System.out.println("拷贝结束!");
        }
    
        /**
         * @param args
         */
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            CopyFilesFromCD ins = new CopyFilesFromCD();
            ins.process();
        }
    
    }
  • 相关阅读:
    [Selenium+Java] Upload Selenium Script to GitHub
    [Selenium+Java] Apache ANT with Selenium: Complete Tutorial
    [Selenium+Java] Selenium Core Extensions (User-Extensions.js)
    序列流、对象操作流、打印流、标准输入输出流、随机访问流、数据输入输出流、Properties(二十二)
    FileReader、 FileWriter、readLine()和newLine()、LineNumberReader(二十一)
    图片加密解密小知识
    道德经--老子
    IO、FileInputStream、(二十)
    异常、Throwable、finally、File类(十九)
    Collections工具类、Map集合、HashMap、Hashtable(十八)
  • 原文地址:https://www.cnblogs.com/nayitian/p/2866713.html
Copyright © 2011-2022 走看看