这个题我研究了很久,但是问题出现在我不知道该怎么去记录这个数量. 
我用了递归,因为可能一个文件夹下还有另外一个文件夹.但是如果我在方法里定义一个变量来当做计数器的话,那么递归调用时,每次调用都会把计数器的值给重新变成0.- package com.heima.test;
 
  
- import java.io.File;
 
 - import java.io.FileInputStream;
 
 - import java.io.FileNotFoundException;
 
 - import java.io.FileOutputStream;
 
 - import java.io.FileReader;
 
 - import java.io.FileWriter;
 
 - import java.io.IOException;
 
 - import java.util.Scanner;
 
  
- public class Test1 {
 
 -         /*
 
 -          * 计算指定路径下所有.txt文件包括子文件夹里的.txt文件的个数然后将所有的.txt文件复制到D盘下任意目录
 
 -          */
 
 -         public static void main(String[] args) throws IOException {
 
 -                 Scanner sc = new Scanner(System.in);
 
 -                 System.out.println("请输入一个文件夹路径");
 
 -                 String line = sc.nextLine();
 
 -                 File file = new File(line);                                                                                                                                        //将键盘录入的字符串封装成一个File
 
 -                 //File newDir = new File("D:\\", file.getName());                                                                                //创建一个文件夹用于将拷贝
 
 -                 copy(file);
 
 -         }
 
 -         /*
 
 -          * 获取数量并拷贝的方法
 
 -          * 1.返回值void
 
 -          * 2.参数列表为File file
 
 -          */
 
 -         public static void copy(File file) throws IOException {
 
 -                 File[] subFiles = file.listFiles();
 
 -                 for (File subFile : subFiles) {
 
 -                         if (subFile.isFile() && subFile.getName().endsWith(".txt")) {
 
 -                                 /*FileInputStream fis = new FileInputStream(file);
 
 -                                 FileOutputStream fos = new FileOutputStream(new File("D:\\", file.getName()));                //拷贝到D盘下
 
 -                                 byte[] arr = new byte[1024];
 
 -                                 int len;
 
 -                                 
 
 -                                 while((len = fis.read(arr)) != -1) {
 
 -                                         fos.write(arr, 0, len);
 
 -                                 }
 
 -                                 fis.close();
 
 -                                 fos.close();*/
 
 -                                 FileReader fr = new FileReader(subFile);                                                                                        //一般.txt格式都是纯文本文件,可以用字符流
 
 -                                 FileWriter fw = new FileWriter(new File("D:/",subFile.getName()));
 
 -                                 int b;
 
 -                                 
 
 -                                 while((b = fr.read()) != -1) {
 
 -                                         fw.write(b);
 
 -         
 
 -                                 }
 
 -                                 fr.close();
 
 -                                 fw.close();
 
 -                                 
 
 -                         }else if(subFile.isDirectory()) {
 
 -                                 copy(subFile);                                                                                //如果是一个文件夹就递归调用
 
 -                         }
 
 -                 }
 
 -         }
 
  
- }
 
 
  复制代码 
大家可以看看我的代码,试着帮我改一下. 
 |   
        
 
    
    
    
     
 
 |