如果您要做代码统计或者其它大量文件的统计,需要得到文件的文件名、路径、日期、以及大小,并且希望将数据存入数据库中
那么你来对地方了:
1,cmd命令窗口下进入到待统计文件的目录下键入命令dir /s >D:\list.txt 回车即可生成文件列表list.txt
注意!!!有时可能会遇到汉字乱码,编码格式选择为UTF-8即可解决
2,编写java代码解析此txt文件将数据存入到oracle数据中
public static void main(String[] args) throws Exception
{
Connection conn = null;
PreparedStatement pst = null;
String rPass = "";//保存文件路径
String data = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = java.sql.DriverManager.getConnection(
"jdbc:oracle:thin:@IP:NAME", "USERNAME", "PASSWORD");
conn.setAutoCommit(false);
pst = (PreparedStatement) conn.prepareStatement("insert into src_list"
+ "(FILENAME, FILEDIR,FILESIZE,FILEDATE,CREDATE,FILETYPENO) values (?,?,?,?,?,?)" );//先建好表哦
/**解析txt文件*/
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream ("D:\\list.txt")));
while((data = br.readLine())!=null)
{
/**过滤文件夹行及无关行,解析含有程序文件的行*/
if(data.contains("\\")) {rPass = data.replaceAll(" |的目录", "");continue; }
else if(data.startsWith("20")&&!data.contains("DIR")&&data.contains(".")){
String[] str = data.split(" +");//按照空格对每行数据进行数组分割
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
System.out.println(rPass);
/**得到当前时间并插入表中CREDATE列*/
Date now = new Date();
DateFormat d1 = DateFormat.getDateTimeInstance();
String current = d1.format(now);
//System.out.println(now);
System.out.println(current);
/**判断文件类型编号插入FILETYPENO列*/
String typeno = "";
if(str[3].contains(".java")) {typeno = "01";}
else if(str[3].endsWith(".class")) {typeno = "02";}
else if(str[3].endsWith(".jsp")) {typeno = "03";}
else if(str[3].endsWith(".htm")) {typeno = "04";}
else if(str[3].endsWith(".jar")) {typeno = "05";}
else if(str[3].endsWith(".pc")|str[3].endsWith(".h")|str[3].endsWith(".ctl")) {typeno = "06";}
else if(str[3].endsWith(".sql")) {typeno = "07";}
else if(str[3].endsWith(".proc")) {typeno = "08";}
else if(str[3].endsWith(".sh")) {typeno = "09";}//shell文件
else if(str[3].endsWith(".ctl")) {typeno = "0A";}//ctl文件
else {typeno = "0B";}
//根据数据库表字段的不同可以做修改
pst.setString(4, str[0]+" "+str[1]);//修改时间
pst.setString(1,str[3] );//文件名
pst.setString(3,str[2] );//文件大小
pst.setString(2, rPass);//路径
pst.setString(5, current);//导入时间
pst.setString(6, typeno);//导入时间
pst.addBatch(); //事务整体添加
}
else continue;
}
pst.executeBatch();
这是我自学java以及数据库后第一次运用解决实际工作需要,小有成就感,代码写的不规范,还请谅解,希望能帮到大家,有什么问题可以留言