java实现文件名,路径,日期,文件大小的统计并存入数据库

如果您要做代码统计或者其它大量文件的统计,需要得到文件的文件名、路径、日期、以及大小,并且希望将数据存入数据库中

那么你来对地方了:

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以及数据库后第一次运用解决实际工作需要,小有成就感,代码写的不规范,还请谅解,希望能帮到大家,有什么问题可以留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值