A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

提示: 该帖被管理员或版主屏蔽

7 个回复

倒序浏览
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.nio.channels.FileChannel;

  6. public class Test {
  7.         public static void main(String[] args) {
  8.                 // 遍历文件夹     这个文件夹为需要 扫描的文件夹
  9.                 File f = new File("D:\\ESS\\cloud");
  10.                 showDir(f);
  11.         }

  12.         // 遍历文件夹,如果满足条件则进行拷贝    注意这里会拷贝包括所有的子文件夹下的文件 ,如果不需要拷贝字文件夹下的文件的话,把递归去掉即可   就是 showDir(files[x]);  这一行
  13.         //  注意确保  D:Show文件夹存在
  14.         public static void showDir(File dir) {
  15.                 File[] files = dir.listFiles();
  16.                 for (int x = 0; x < files.length; x++) {
  17.                         if (files[x].isDirectory())
  18.                                 showDir(files[x]); // 如果是目录,那继续调用这个函数,知道它不是目录,到else部分跳出来
  19.                         else {
  20.                                 //满足条件则进行拷贝   如果是 .java文件就进行拷贝,当然如果是需要拷贝 txt的,那么把.java 替换为 .txt即可
  21.                                 if (files[x].getName().endsWith(".java")) {
  22.                                         fileChannelCopy(files[x],new File("D:\\Show\\" + files[x].getName()));
  23.                                 }
  24.                                 System.out.println(files[x]);// 出口 当执行到这里,对应的函数也就结束了
  25.                         }

  26.                 }
  27.         }

  28.         /***
  29.          * 文件拷贝方法
  30.          * @param s
  31.          * @param t
  32.          */
  33.         public static void fileChannelCopy(File s, File t) {
  34.                 FileInputStream fi = null;
  35.                 FileOutputStream fo = null;
  36.                 FileChannel in = null;
  37.                 FileChannel out = null;
  38.                 try {
  39.                         fi = new FileInputStream(s);
  40.                         fo = new FileOutputStream(t);
  41.                         in = fi.getChannel();// 得到对应的文件通道
  42.                         out = fo.getChannel();// 得到对应的文件通道
  43.                         in.transferTo(0, in.size(), out);// 连接两个通道,并且从in通道读取,然后写入out通道
  44.                 } catch (IOException e) {
  45.                         e.printStackTrace();
  46.                 } finally {
  47.                         try {
  48.                                 fi.close();
  49.                                 in.close();
  50.                                 fo.close();
  51.                                 out.close();
  52.                         } catch (IOException e) {
  53.                                 e.printStackTrace();
  54.                         }
  55.                 }
  56.         }
  57. }
复制代码



fileChannelCopy(files[x],new File("D:\\Show\\" + files[x].getName()));
请注意这行
这个为你要将文件拷贝到哪个文件夹下,要确保那个文件夹存在,现在是放在  d:show 文件夹下的,如果要换文件夹,请修改成自己的文件夹,并保证文件夹存在就OK了
回复 使用道具 举报
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;

public class Test {
        public static void main(String[] args) {
                // 遍历文件夹     这个文件夹为需要 扫描的文件夹
                File f = new File("D:\\ESS\\cloud");
                showDir(f);
        }

        // 遍历文件夹,如果满足条件则进行拷贝    注意这里会拷贝包括所有的子文件夹下的文件 ,如果不需要拷贝字文件夹下的文件的话,把递归去掉即可   就是 showDir(files[x]);  这一行
        //  注意确保  D:Show文件夹存在
        public static void showDir(File dir) {
                File[] files = dir.listFiles();
                for (int x = 0; x < files.length; x++) {
                        if (files[x].isDirectory())
                                showDir(files[x]); // 如果是目录,那继续调用这个函数,知道它不是目录,到else部分跳出来
                        else {
                                //满足条件则进行拷贝   如果是 .java文件就进行拷贝,当然如果是需要拷贝 txt的,那么把.java 替换为 .txt即可
                                if (files[x].getName().endsWith(".java")) {
                                        fileChannelCopy(files[x],new File("D:\\Show\\" + files[x].getName()));
                                }
                                System.out.println(files[x]);// 出口 当执行到这里,对应的函数也就结束了
                        }

                }
        }

        /***
         * 文件拷贝方法
         * @param s
         * @param t
         */
        public static void fileChannelCopy(File s, File t) {
                FileInputStream fi = null;
                FileOutputStream fo = null;
                FileChannel in = null;
                FileChannel out = null;
                try {
                        fi = new FileInputStream(s);
                        fo = new FileOutputStream(t);
                        in = fi.getChannel();// 得到对应的文件通道
                        out = fo.getChannel();// 得到对应的文件通道
                        in.transferTo(0, in.size(), out);// 连接两个通道,并且从in通道读取,然后写入out通道
                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        try {
                                fi.close();
                                in.close();
                                fo.close();
                                out.close();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
        }
}




热乎乎刚出炉,运行时请参照注释
目前是遍历文件夹下所有的文件,包括子目录的文件,如果不需要子目录的文件,把注释中说的那行去掉即可

现在是拷贝的.java文件,如果要.txt  那么把   .java改称.txt即可
回复 使用道具 举报
先变遍历里面所有的.txt文件,然后用I/O流输出到D盘上
回复 使用道具 举报
怎么给屏蔽了。。。
回复 使用道具 举报

为什么我幸苦写的程序却都不给分 ,都特么是些什么人啊

另外希望给黑马反馈反馈   论坛这部分逻辑写的实在是太烂了

在这个版块发帖子 发完奖励的黑马币 需要暂时冻结
如果在有回复的情况下 ,三天没有结帖子应该把 那些黑马币处理掉平均分配给回帖的人 ,对于不结贴的人 ,扣除双倍黑马币


不然我这辛辛苦苦写的程序啊 ,哎  
回复 使用道具 举报
徐慧shanghai 发表于 2015-10-16 09:27
为什么我幸苦写的程序却都不给分 ,都特么是些什么人啊

另外希望给黑马反馈反馈   论坛这部分逻辑写的 ...

我也不知道为什么我的帖子被屏蔽了,本来想给你分的   但是被管理员删了  我也不知道 我发的这帖子有啥问题!!!!!
回复 使用道具 举报
920792433 发表于 2015-10-19 00:40
我也不知道为什么我的帖子被屏蔽了,本来想给你分的   但是被管理员删了  我也不知道 我发的这帖子有啥问 ...

哦,OK,谢谢啦,不过分也够了,有什么问题可以问我哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马