首页 > 编程知识 正文

Java递归复制文件夹,bat统计文件夹下文件的数目

时间:2023-05-03 17:00:10 阅读:17424 作者:2961

我的博客——Java文件操作系列【Java文件操作(一)递归打印文件目录

【Java文件操作(2)】删除文件夹,但保留其内部文件

【Java文件操作(3)】递归复制文件夹中的所有文件

【Java文件操作(四)】递归应用递归,计算每个文件夹的大小

【Java文件操作(五)从txt文件读取字符串、乱码的原因

【Java文件操作(六)内存复制图像:字节输出流(文件输出流等判读

【Java码转换】将汉字转换为gb2312码

在思维方式main中调用visit函数,递归访问各文件夹

在visit函数中调用calculateSize函数,递归计算当前文件夹的大小,并输出当前文件路径、文件大小

写了两个多小时才写。 我很会做饭呢。 如果加上递归,效率不会再低了…一定有更好的方法

代码版本1 :输出到控制台

package cn.hanquan.test; import java.io.*; /* *递归应用递归,每个文件夹大小*/publicclassdircount { publicstaticstringsrc=' c :_ SERS\ bug _desktop__collegeff}计算//--------文件夹递归函数------ *参数: File f访问的文件/文件夹* int i递归深度*返回值: na j () system.out.print('-'; } system.out.println (f.getpath ((t (t大小: )计算) f,0 ) ); if(f.isdirectory () ) {File[] files=f.listFiles ); for (文件:文件) visit ) t,i 1); }//-------------计算文件大小的递归函数----*参数: File f计算的文件/文件夹* long l已经计算的文件累计大小*返回值:文件File f的if(f!=null f.exists () (/文件夹for ) files:f.listfiles ) (if ) s.isfile ) ) {curLen =s.length; }else{curLen=calculatesize(s,Curlen ); //递归访问和接收其所有子文件夹的累计大小}}}return curLen; } publicstaticvoidmain (字符串[ ] args ) visit ) newfile(src ),0 ); }执行效果c :usersbugdesktopcollege files4 -毛概大小:3090637-c :users _ bug _ desktop _ college files txt大小336014659-c :usersbugdesktopcollege files4-college files4 -毛概复习资料毛概-副本. docx大小3324 复习资料College Files4-毛概复习资料毛概第23页new.pdf尺寸:467120-- c :usersbugdesktopcollege files4- 4 毛概第23页. pdf大小:401976-- c :usersbugdesktopcollege filer desktopcollege files4 -毛概复习资料试验collegefiles4-毛概collegefiles4-毛概毛概大小:733818-- c :usersbugdesktopcollege files4- 4

ege Files4-毛概毛概毛概2017毛概复习知识点.pdf大小:308882---C:UsersBugDesktopCollege Files4-毛概毛概毛概毛概 (合).docx大小:27327---C:UsersBugDesktopCollege Files4-毛概毛概毛概毛概1-9章题库全 - 副本.doc大小:119296---C:UsersBugDesktopCollege Files4-毛概毛概毛概毛概1-9章题库全.doc大小:121344---C:UsersBugDesktopCollege Files4-毛概毛概毛概毛概整理.docx大小:35563---C:UsersBugDesktopCollege Files4-毛概毛概毛概毛概期末考试题库(2015年最新).docx大小:106432---C:UsersBugDesktopCollege Files4-毛概毛概毛概研究性学习.docx大小:14974-C:UsersBugDesktopCollege Files4-毛概毛概.rar大小:608019-C:UsersBugDesktopCollege Files4-毛概毛概1,6章.docx大小:16868-C:UsersBugDesktopCollege Files4-毛概毛概1113.docx大小:28689-C:UsersBugDesktopCollege Files4-毛概毛概25页.docx大小:53264-C:UsersBugDesktopCollege Files4-毛概毛概期末选择题题库.doc大小:131584-C:UsersBugDesktopCollege Files4-毛概第7,8章.docx大小:19061-C:UsersBugDesktopCollege Files4-毛概第9、10章.docx大小:22610-C:UsersBugDesktopCollege Files4-毛概第四、五章.docx大小:22081

文件夹界面

版本2:输出txt文件

package cn.hanquan.test;import java.io.File;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;//简单的txt文件复制public class FileOutputStreamTest {public static String SRC = "C:\Users\Bug\Desktop\College Files\0-区块链";static StringBuilder str = new StringBuilder();public static void main(String[] args) throws IOException {visit(new File(SRC), 0);FileWriter fos = new FileWriter("C:\Users\Bug\Desktop\newFileList.txt");byte[] bbuf = new byte[32];fos.write(str.toString());fos.close();//System.out.println(str);}public static void visit(File f, int i) throws IOException {for (int j = 0; j < i; j++) {str.append("-");System.out.print("-");}str.append(f.getPath() + "tt大小:" + calculateSize(f, 0) + "rn");System.out.println(f.getPath() + "tt大小:" + calculateSize(f, 0));if (f.isDirectory()) {File[] files = f.listFiles();for (File t : files) {visit(t, i + 1);}}}public static long calculateSize(File f, long l) {long curLen = l;if (f.isFile()) // 文件return f.length();if (f != null && f.exists()) { // 文件夹for (File s : f.listFiles()) {if (s.isFile()) {curLen += s.length();} else {curLen = calculateSize(s, curLen);// 递归访问 并接收其所有子文件夹的累计大小}}}return curLen;}}

附:使用CommonsIo组件操作方式,不需要重复造轮子

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。