• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用Java實現磁盤文件以大對象二進制文件形式存儲到Oracle數據庫

    發表于:2007-04-29來源:作者:點擊數: 標簽:java以大磁盤文件對象
    package admit.action; /*用 JAVA 讀取各種計算機文件系統的文件列表 當你安裝了jdk,在jdk的類庫里,有一個標準的File類,通過該類,可以很方便的實現瀏覽各種文件系統的功能。 File類: java.lang.Object | +--java.io.File File類擴展了Object對象,實現

    package admit.action;

    /*用JAVA讀取各種計算機文件系統的文件列表

    當你安裝了jdk,在jdk的類庫里,有一個標準的File類,通過該類,可以很方便的實現瀏覽各種文件系統的功能。
    File類:
    java.lang.Object
    |
    +--java.io.File
    File類擴展了Object對象,實現了Serializable, Comparable定義的接口,可以通過File的一個實例對jvm上的文件系統進行各種操作,下面我編寫了一個FileViewer類,該類通過Iterator類將一個文件列表實現對列表的迭代操作
    FileViewer.java */

    import java.io.File;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.Vector;

     

    public class ReadPath {
     File myDir;

     File[] contents;

     Vector vectorList;

     Iterator currentFileView;

     File currentFile;

     String path;

     public ReadPath() {
      path = new String("");
      vectorList = new Vector();
     }

     public ReadPath(String path) {
      this.path = path;
      vectorList = new Vector();
     }

     /**
      * 設置瀏覽的路徑
      */
     public void setPath(String path) {
      this.path = path;
     }

     /***************************************************************************
      * 返回當前目錄路徑
      */
     public String getDirectory() {
      return myDir.getPath();
     }

     /**
      * 刷新列表
      */
     public void refreshList() {

      if (this.path.equals(""))
       path = "c:\\";
      myDir = new File(path);

      vectorList.clear();
      contents = myDir.listFiles();
      // 重新裝入路徑下文件
      for (int i = 0; i < contents.length; i++) {
       vectorList.add(contents[i]);
      }
      currentFileView = vectorList.iterator();
     }

     /**
      * 移動當前文件集合的指針指到下一個條目
      *
      * @return 成功返回true,否則false
      */
     public boolean nextFile() {
      while (currentFileView.hasNext()) {
       currentFile = (File) currentFileView.next();
       return true;
      }
      return false;
     }

     /**
      * 返回當前指向的文件對象的文件名稱
      */
     public String getFileName() {
      return currentFile.getName();
     }

     /**
      * 返回當前指向的文件對象的文件尺寸
      */
     public String getFileSize() {
      return new Long(currentFile.length()).toString();
     }

     /**
      * 返回當前指向的文件對象的最后修改日期
      */
     public String getFileTimeStamp() {
      return new Date(currentFile.lastModified()).toString();
     }

     /**
      * 返回當前指向的文件對象是否是一個文件目錄
      */
     public boolean getFileType() {
      return currentFile.isDirectory();
     }

     /*
      * 通過setPath()方法設定要瀏覽的目錄(注意如果操作系統為微軟操作系統,每個路徑分隔符應寫成兩個斜杠\),nextFile()方法用來移動列表記錄,可以通過getFileName()得到文件或文件夾名稱,通過getFileSize()得到文件尺寸,通過getFileTimeStamp()得到文件的最后修改時間,通過getFileType()判斷是否是一個文件目錄。
      * 編寫一個test例子測試這個FileViewer類
      */

     public ArrayList okpath(){
     
      ReadPath f = new ReadPath();
      f.setPath("c:\\aaa\\");
      f.refreshList();
      
      ArrayList list = new ArrayList();
      while (f.nextFile()) {
        list.add(f.path+f.getFileName());
      }
      return list;
     }
     
    /* public static void main(String[] args) {
      ReadPath f = new ReadPath();
      ArrayList list1 = f.okpath();
      for(int j=0;j<list1.size();j++){
       System.out.println(list1.get(j));
      }
      }*/

     }


     
    package admit.action;
    import java.sql.*;
    import java.util.ArrayList;
    import java.io.*;
    import oracle');" target="_self">oracle.sql.*;
    public class WriteBlob {

      public static void main(String[] args) {
     
      

       try {
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.100:1521:adminsys","admit","wuyue");
            conn.setAutoCommit(false);

           
            ReadPath readPath=new ReadPath();
            ArrayList list = readPath.okpath();
    /*        String ff[]=new String[2];
            String fileName = "c://tupian.gif"; */
     
            for(int i=0;i<list.size();i++){
             System.out.println("路徑名="+list.get(i).toString());
             File f = new File(list.get(i).toString());
                FileInputStream fin = new FileInputStream(f);
               
                BLOB blob = null;

                PreparedStatement pstmt = conn.prepareStatement("insert into javatest(name,context) values(?,empty_blob())");
                pstmt.setString(1,""+list.get(i).toString()+"");
                pstmt.executeUpdate();
                pstmt.close();

                pstmt = conn.prepareStatement("select context from javatest where name= ? for update");
                pstmt.setString(1,""+list.get(i).toString()+"");
                ResultSet rset = pstmt.executeQuery();
                if (rset.next()) blob = (BLOB) rset.getBlob(1);

                pstmt = conn.prepareStatement("update javatest set context=? where name=?");

                OutputStream out = blob.getBinaryOutputStream();

                int count = -1, total = 0;
                byte[] data = new byte[(int)fin.available()];
                fin.read(data);
                out.write(data);
                /*
                byte[] data = new byte[blob.getBufferSize()];  另一種實現方法,節省內存
                while ((count = fin.read(data)) != -1) {
                  total += count;
                  out.write(data, 0, count);
                }
                */

               
                fin.close();
                out.close();

                pstmt.setBlob(1,blob);
                pstmt.setString(2,""+list.get(i).toString()+"");
                pstmt.executeUpdate();
               
                pstmt.close();


             System.out.println("插入成功?。?!");
            }
            conn.commit();
            conn.close();
           
          } catch (SQLException e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
          } catch (IOException e) {
            System.err.println(e.getMessage());
          }
        } 
       
    }

     

    源文地址:http://blog.csdn.net/hxcfindjob/archive/2006/03/03/614997.aspx


    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    ...

    熱門標簽

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>