Javaの-I / Oストリームの新しい理解

  いくつかの興味深い問題についての記録は、システムがJavaのIOストリーム学んだが、仕事で長時間使用しないこれらの日における需要のバランスをオフにスローされるようにつながり、しばらくの間、検索される前に、仕事で出会いますいくつかの時間を遅延されたデータは、よく騒ぎ、ここでは簡単な需要について話をします。

  需要はExcelファイルに格納されたデータテーブル内のデータベースのBLOBフィールドがあるようですが、私は、フォルダを指定し、このファイルサーバーを配置する必要があります。以下のExcelファイルを作成するために、指定したフォルダに、1:アイデアはこれです。2、JDBCは、データベース内のファイルを削除します。図3に示すように、入力および出力ストリームは、それぞれ指定されたファイルにデータベースからデータをインポートするファイルに変換されます。ここでは、コードは次のようになります。

  

パッケージhelloTest; 

輸入com.fr.base.FRContext;
輸入com.fr.data.AbstractTableData。
輸入com.fr.general.data.TableDataException。
輸入com.fr.third.org.apache.poi.hssf.usermodel.HSSFSheet。
輸入com.fr.third.org.apache.poi.hssf.usermodel.HSSFWorkbook。

輸入 java.io. * ;
インポートのjava.sql.Connection;
インポートのjava.sql.DriverManager。
インポートのjava.sql.PreparedStatement;
インポートのjava.sql.ResultSet; 

パブリック クラスのReadFile {
     プライベート 静的のPreparedStatement psの。
    

    / **
     *指定したフォルダにデータベース・サーバに保存されたファイルを読む
     Sunj 20190912 @auther * 
     * @paramのID 
     * @return のjava.io.File
      * / 

    パブリックはgetFile(文字列ID){ファイル
        文字列のSQL =は「SELECT FILEDATA上から= credit.filedataをIDを述べたWHERE "?; 
        (FRContext.getLogger()の情報。 ParamTableDataDemoのSQLクエリ:N \ - " + " SQL); 
        接続CONN = のgetConnection(); 
        ファイルファイル = 新しい新しいファイル(" D:\\ルートEFSは、「\\ \\ Data.xls );
         試み{ 

            のOutputStreamのOutputStream = 新新たFileOutputStream(ファイル); 
            PS = conn.prepareStatement(SQL)。
            ps.setString( 1 、ID)。
            ResultSetのRS = ps.executeQuery()。
            InputStream = NULL ; //文件数据输入流
             一方(rs.next()){  = rs.getBlob(1 ).getBinaryStream(); 
            } 
            バイト [] B = 新しい バイト [1024 ];
            int型のlen = 0 ;
            一方、((LEN = in.read(B))!= -1 ){ 
                outputStream.write(B、0 、LEN); //データは、指定されたファイルに書き込まれ
            } 
            outputStream.close(); 
            in.close(); 
        } キャッチ(例外E){ 
            e.printStackTrace(); 
        } 
        戻りファイル; 
    } 

    / ** 
     *読み出しファイルサーバ。
     @Auther Sunj 20190912 * 
     * @return ブール
      * / 
    パブリック ブールinputDataToDb(文字列filePathに){ 
        filePathには = "D:\\ \\ \\ EFSにルートをData.xls" ;
         試み{ 
            のInputStreamは、IS = 新しい新しいFileInputStreamを(filePathに);
            HSSFWorkbookエクセル = 新しいHSSFWorkbook(です)。
            INT ; numSheet <excel.getNumberOfSheets(); numSheet = 0 numSheet ++ ){ 
                HSSFSheetシート = excel.getSheetAt(numSheet)。
            } 
        } キャッチ(例外e){ 
            e.printStackTrace(); 
        } 
        を返す 
    } 

    / ** 
     *建立数据库连接
     * @auther SunJ 20190912 
     * @return のjava.sql.Connection
      * / 
    パブリック接続のgetConnection(){

        文字列DRIVERNAME = "oracle.jdbc.driver.OracleDriverと" ; 
        文字列のURL = "はjdbc:オラクル:薄い:10.116.50.123 @:1521 /テスト" ; 
        文字列名 =「」; 
        文字列のパスワード =「」; 
        接続コン; 
        試す{ 
            Class.forNameの(DRIVERNAME)。
            CON = したDriverManager.getConnection(URL、ユーザ名、パスワード); 

        } キャッチ(例外e){ 
            e.printStackTrace(); 
            リターン ヌル
        } 
        戻りCON。
    } 

    公共の 静的 ボイドメイン(文字列[]引数){ 
        のReadFileのReadFile = 新しいのReadFileを(); 
        ファイルファイル = ReadFile.getFile( "b3448e077f3f4b229f30a86c604e23ab" ); 
        System.out.println(ファイル); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/sjjava/p/11518768.html