读取目录下有多少文件夹,多少行代码,最后修改时间,以及总行数,总目录
编写一个FileUtil工具类
写一个关于行数的getFileRow()方法
1.创建类和编写方法
2.引流
FileReader reader = new FileReader(file)
3.实例化StringBuffer对象
StringBuilder对象代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过append()方法改变这个字符串对象的字符序列,最后通过调用它的toString()方法将其转换为一个String对象。
StringBuilder sbu = new StringBuilder();
3. 当在读取的时候进行追加,将指定的字符串追加到此字符序列
sbu.append();追加
String .format();改变格式
while (reader.ready()) {
sbu.append(String.format("%c", reader.read()));
}
4.最后写出rows行数的表达式,并返回rows
rows = sbu.toString().lines().count();
5.完整代码
public static long getFileRow(String file) {
long rows = 0;
//字符流
try (FileReader reader = new FileReader(file)) {
StringBuilder sbu = new StringBuilder();
while (reader.ready()) {
sbu.append(String.format("%c", reader.read()));
}
rows = sbu.toString().lines().count();
} catch (Exception e) {
}
return rows;
}
创建一个静态count()的方法进行调用
定义行数为0, 文件名个数为0;
1.list()方法,用于遍历某个指定目录下的所有文件的名称
File[] files = dir.listFiles();
2.然后进行递归遍历,
先判断是不是目录,如果是返回给count,如果不是,判断是否为文件并获取他的后缀名是Java的文件
并且输出最后一次修改他的时间和文件地址
if (file.isDirectory()){
count(file);
} else if (file.isFile() && file.getName().endsWith("java")) {
String p=file.getAbsolutePath();//返回抽象路径名的绝对路径名字符串。
String t=String .format("%tF %<tT",file.lastModified());//输出最后一次的修改时间
3.调用 FileUtil工具类下的getFileRow方法的得到每个目录文件的代码行数以及文件夹不断进行遍历
rowscount+=FileUtil.getFileRow(p); //调用FileUtil类里面的方法
++filecount;
4.输出
System.out.println(p+"["+FileUtil.getFileRow(p)+"行 时间:"+t+"]");
在main方法中调用这两个方法进行使用
1获取文件地址
String path =" (地址)";
2.使用count()方法获取这个地址下的文件个数,行数,文件地址以及最后修改时间
count(new File(path));
3.输出行数.文件个数
System.out.println(filecount);
System.out.println(rowscount);
总体代码 :
FileUtil类 getFileRow()方法
/*
* Copyright (c) 2020, 2023.
*
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.util.HashMap;
import java.util.StringJoiner;
/**
* <p>Project: File - F3</p>
* <p>Powered by Cyy On 2023-07-20 16:48:20</p>
* <p>描述:<p>
*
* @author Cyy [210585265@qq.com]
* @version 1.0
* @since 17
*/
public class FileUtil {
public static long getFileRow(String file) {
long rows = 0;
//字符流
try (FileReader reader = new FileReader(file)) {
StringBuilder sbu = new StringBuilder();
while (reader.ready()) {
sbu.append(String.format("%c", reader.read()));
}
rows = sbu.toString().lines().count();
} catch (Exception e) {
}
return rows;
}
}
cout() 以及main()方法输出
/*
* Copyright (c) 2020, 2023.
*
*/
import java.io.File;
/**
* <p>Project: File - Dir2</p>
* <p>Powered by Cyy On 2023-07-21 08:55:12</p>
* <p>描述:<p>
*
* @author Cyy [210585265@qq.com]
* @version 1.0
* @since 17
*/
public class Dir2 {
static int filecount=0;
static int rowscount=0;
public static void main(String[] args) {
String path ="D:\\my";
count(new File(path));
System.out.println(filecount);
System.out.println(rowscount);
}
//计算目录下多少个文件,,和每一个文件行数,最后修改时间,总共我文件数,总共行数
public static void count(File dir){
File[] files = dir.listFiles();
for (File file:files){
if (file.isDirectory()){
count(file);
} else if (file.isFile() && file.getName().endsWith("java")) {
String p=file.getAbsolutePath();//返回抽象路径名的绝对路径名字符串。
String t=String .format("%tF %<tT",file.lastModified());//输出最后一次的修改时间
rowscount+=FileUtil.getFileRow(p); //调用FileUtil类里面的方法
++filecount;
System.out.println(p+"["+FileUtil.getFileRow(p)+"行 时间:"+t+"]");
}
}
}
}