ITPub博客

首页 > Linux操作系统 > Linux操作系统 > JAVA遍历文件夹,内容插入数据库

JAVA遍历文件夹,内容插入数据库

原创 Linux操作系统 作者:xj951423274 时间:2013-07-29 17:00:46 0 删除 编辑

 

public class ReadFile {

 private static ArrayList fileList = new ArrayList();
 
 public static void main(String[] args){
  long a = System.currentTimeMillis();
  
  refreshFileList("F:\\文件夹");
  
  for(int i = 0; i < fileList.size(); i++){
   String fstr = (String) fileList.get(i);
   File ff = new File(fstr);
   insertBlob(ff);
  }
  
  System.out.println(System.currentTimeMillis() - a );
 }
 
 /**
  * 递归遍历文件夹,存储目录名字进
  * fileList
  * @param strPath
  */
 public static void refreshFileList(String strPath){
  
  File dir = new File(strPath);
  File[] files = dir.listFiles();
  
  if(files == null){
   return;
  }
  //递归遍历文件夹
  for (int i = 0 ; i < files.length; i++){
   if (files[i].isDirectory()){
    refreshFileList(files[i].getAbsolutePath());
   } else {
    String strFileName = files[i].getAbsolutePath().toLowerCase();
        File f = new File(strFileName);
    fileList.add(files[i].getAbsolutePath());
   }
  }
 }
 
 /**插入BLOB
  * 一般是先通过select  ... for update锁定blob列,然后写入blob值,
  * 然后提交。要用到特定的Oracle BLOB类。
  */
 public static void insertBlob(File f){
  try {
   
   Connection conn = ConnDB.getConn();
   conn.setAutoCommit(false);
   Statement st = conn.createStatement();
   String sql ="INSERT INTO FILE_TEST(FILEID,FILE_B,FILE_COMMENT) VALUES(FILE_TEST_SEQ.nextval,EMPTY_BLOB(),'"+f.getAbsolutePath()+"')";
   System.out.println("OOO : "+f.getAbsolutePath());
   st.executeUpdate(sql);
   ResultSet rs = st.executeQuery("SELECT FILE_B FROM FILE_TEST WHERE FILEID = 1 FOR UPDATE ");
   if(rs.next()){
    oracle.sql.BLOB blob = (BLOB) rs.getBlob(1);
    OutputStream utStream = blob.getBinaryOutputStream();
    
    InputStream fis = new FileInputStream(f);
    byte[] b = new byte[blob.getBufferSize()];
    int len = 0;
    while ((len = fis.read(b)) != -1){
     outStream.write(b,0,len);
    }
    fis.close();
    outStream.flush();
    outStream.close();
    
   }
   conn.commit();
   conn.close();

  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28275505/viewspace-767395/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 树状JSON
请登录后发表评论 登录
全部评论

注册时间:2013-07-29

  • 博文量
    22
  • 访问量
    28260