计算指定路径下所有.txt文件包括子文件夹里的.txt文件的个数然后将所有的.txt文件复制到D盘下任意目录
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.util.Scanner;
- public class Test1 {
- public static void main(String[] args) throws Exception{
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入一个路径:");
- String path = sc.next();
- sc.close();
-
- File olddir = new File(path);
- File newdir = new File("d:\\txt");
- listTxt(olddir,newdir);
- renameTxt(newdir);
-
- }
- //列出指定目录中所有文件的方法
- public static void listTxt(File olddir,File newdir) throws Exception{
- int count = 0;//定义一个计数器,用于计数txt文件个数
- if(!olddir.exists()){
- System.out.println("目录不存在");
- }
- if(!newdir.exists() || !newdir.isDirectory()){
- newdir.mkdirs();
- }
- File f = new File(newdir.getPath()+"\\"+olddir.getName());
- f.mkdir();
- File[] files = olddir.listFiles();
- for(File file : files){
- if(file.isDirectory()){
- listTxt(file,f);
-
- }else if(file.getName().endsWith(".txt")){
- copyTxt(file,f);
-
- }
- }
- System.out.println("以.txt文件结尾的文件的个数是:"+count);
- }
- //复制指定目录中文件的方法
- public static void copyTxt(File olddir,File newdir) throws Exception{
- //创建缓冲区读取流对象并与要复制的文件对象关联
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(olddir));
- //创建缓冲区写入流对象并与要复制的到的文件对象关联
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newdir.getPath()+"\\"+olddir.getName()));
- int by = 0;
- while((by=bis.read())!=-1){
- bos.write(by);
- }
- //关闭资源
- bis.close();
- bos.close();
- }
- //修改文件名的方法
- public static void renameTxt(File dir){
- if(!dir.exists()){
- System.out.println("文件不存在");
- }
- File[] files = dir.listFiles();
- for(File file : files){
- if(file.isDirectory()){
- renameTxt(file);
- }else if(file.getName().endsWith(".txt")){
- File newfile = new File(file.getPath().replaceAll("\\.txt", ".java"));
- file.renameTo(newfile);
- }
- }
- }
- }
复制代码 请大神修改一下代码将记录.txt文件次数的count写到正确位置,能统计总共的.txt文件的个数。不要分开将统计子目录跟父目录中的次数。
|