java 文件上传至oracle blob字段 实现

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

指定文件夹下的所有文件上传至oracle的blob字段,java实现


package com.huth;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.OutputStream;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Blob;import java.util.ArrayList;/*** * 采用简单递归方法读取指定目录下的所有固定后缀的文件(文件夹下可能嵌套子文件夹)**/
public class ReadFiles {private ArrayList<File> files; //目录下的所有文件列表private static String prefix = "doc"; //文件后缀public ReadFiles(ArrayList<File> files){this.files = files;}public void readFilesInDir(String dir)throws FileNotFoundException,IOException{try{File folder = new File(dir);//若dir是文件,直接获取文件名if(!folder.isDirectory()){//System.out.println(folder+"是文件");String fileName = dir +"\\"+folder.getName();//System.out.println("fileName="+fileName);System.out.println("prefix="+fileName.substring(fileName.lastIndexOf(".")+1).trim());if(fileName.substring(fileName.lastIndexOf(".")+1).trim().equalsIgnoreCase(prefix)){files.add(new File(fileName));}}//若dir是文件夹,则获取文件夹内的文件列表//若其中还有文件夹,则递归else if(folder.isDirectory()){//System.out.println(folder+"是文件夹");String[] fileLists = folder.list();//文件夹下的文件名和子文件夹名for(int i=0;i<fileLists.length;i++){//System.out.println("fileLists["+i+"]="+fileLists[i]);File file = new File(dir+"\\"+fileLists[i]);if(!file.isDirectory()){//System.out.println(file+"是文件");String fileName = dir +"\\"+file.getName();//System.out.println("fileName="+fileName);System.out.println("prefix="+fileName.substring(fileName.lastIndexOf(".")+1).trim());if(fileName.substring(fileName.lastIndexOf(".")+1).trim().equalsIgnoreCase(prefix)){files.add(new File(fileName));}					}else if(file.isDirectory()){readFilesInDir(dir+"\\"+fileLists[i]);}}}}catch(FileNotFoundException e){e.printStackTrace();}catch(IOException ex){ex.printStackTrace();}}private Connection newConnection(String user, String password){Connection con = null;try{Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();con = DriverManager.getConnection("jdbc:oracle:thin:@172.16.10.249:1521:test",user,password);}catch(SQLException e){e.printStackTrace();return null;}catch(ClassNotFoundException exc){exc.printStackTrace();return null;}catch(IllegalAccessException ex){ex.printStackTrace();return null;}catch(InstantiationException exception){exception.printStackTrace();return null;}return con;}//unit testpublic static void main(String[] args){ArrayList<File> files = new ArrayList<File>();ReadFiles read = new ReadFiles(files);Connection conn = read.newConnection("test", "oracle");ResultSet rs;try{read.readFilesInDir("d:/test");System.out.println("files.size()="+files.size());for(int i=0;i<files.size();i++){String fileName = files.get(i).getName();System.out.println("fileNames["+i+"]="+fileName);FileInputStream fin = new FileInputStream(files.get(i));PreparedStatement stmt = conn.prepareStatement("insert into aa values("+fileName+",empty_blob())");rs = stmt.executeQuery("select text from aa where name = "+fileName+" for update");if(rs.next()){Blob blob = rs.getBlob(1);OutputStream out = ((oracle.sql.BLOB)blob).getBinaryOutputStream();byte[] b = new byte[((oracle.sql.BLOB)blob).getBufferSize()];int len = 0;while((len = fin.read(b))!=-1)out.write(b,0,len);fin.close();out.close();rs.close();conn.commit();}}conn.close();}catch(FileNotFoundException e){e.printStackTrace();}catch(IOException ex){ex.printStackTrace();}catch(SQLException exc){exc.printStackTrace();}}}

转载于:https://my.oschina.net/rouchongzi/blog/113987

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国这门失传已久的武林绝学,竟让研究它的老外拿了诺贝尔奖

全世界只有3.14 % 的人关注了爆炸吧知识欲练神功学好物理中国武术&#xff0c;博大精深。能够掌握一门武林绝学&#xff0c;是全世界男人的终极梦想。可翻翻公认的武林十大绝学&#xff1a;葵花宝典、六脉神剑、九阳神功....不是断子绝孙&#xff0c;就是杀人于无形&#xff0c…

中国地区三级联动下拉菜单的实现

1.首先是js文件(area.js)&#xff1a; 1 function Dsy()2 {3 this.Items {};4 }5 Dsy.prototype.add function(id,iArray)6 {7 this.Items[id] iArray;8 }9 Dsy.prototype.Exists function(id)10 {11 if(typeof(this.Items[id]) "undefined") return false;12 r…

html 图片 填充方式,css怎么让图片填满?

在css中&#xff0c;可以将div的高度和宽度属性设置为100%&#xff0c;同时使用background-size属性设置背景图片为100%&#xff0c;便可以实现背景图片铺满屏幕。css怎么让图片填满&#xff1f;1、新建一个HTML文件&#xff0c;使用div标签创建一个模块&#xff0c;并设置其cl…

solrcloud线上创建collection,修改默认配置

一、先看API&#xff0c;创建collection1、上传配置文件到zookeeper1&#xff09; 本地内嵌zookeeper集群&#xff1a;java -classpath ./solr-webapp/webapp/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost localhost:9983,localhost:8574,localhost:9900 …

豆瓣评分9.4!这一部纪录片,探秘中国的未至之境!

全世界只有3.14 % 的人关注了爆炸吧知识Bilibili 联合“美国国家地理”&#xff0c;悄悄出品了一部史诗级动物记录片&#xff0c;忍不住要推荐给大朋友小朋友们——《未至之境》。这部纪录片由B站和国家地理联合创作&#xff0c;从绵延万里的山脉高原到枝繁叶茂的雨林竹海&…

.NET内存性能分析指南

.NET Memory Performance Analysis知道什么时候该担心&#xff0c;以及在需要担心的时候该怎么做译者注作者信息&#xff1a;Maoni Stephens - 微软架构师&#xff0c;负责.NET Runtime GC设计与实现 博客链接 Github译者&#xff1a;Bing Translator、INCerry 博客链接&#x…

解决php连接mysql数据库中文乱码问题

首先数据库编码和Mysql连接校对编码要一致&#xff1a; 其次在php文件中加入这两句&#xff1a; 2013-3-21更新&#xff1a; Linux下最好都用UTF-8编码&#xff1a; 1、数据库里面选utf-8_general_ci 2、php文件加上header("Content-Type: text/html; charset utf-8"…

html表格在页面间距,在CSS中设置单元格和单元格间距?

梦里花落0921基本要控制css中的“单元格填充”&#xff0c;只需使用padding放在桌子上。例如10便士的“细胞填充物”&#xff1a;td { padding: 10px;}对于“单元格间距”&#xff0c;可以应用border-spacing属性设置到表中。例如&#xff0c;10 px的“单元间距”&#xff1a;t…

DAS,NAS,SAN在数据库存储上的应用

一. 硬盘接口类型1. 并行接口还是串行接口(1) 并行接口&#xff0c;指的是并行传输的接口&#xff0c;比如有0~9十个数字&#xff0c;用10条传输线&#xff0c;那么每根线只需要传输一位数字&#xff0c;即可完成。从理论上看&#xff0c;并行传输效率很高&#xff0c;但是由于…

Spring Data Redis—Pub/Sub(附Web项目源码)

一、发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候&#xff0c;我们称这个客户端为发布者(publisher)。 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE 命令接收信息的时候&#xff0c;我们称这个客户端为订阅者(subscriber)。 为了解耦发布者(publish…

突破历史,21年C#将首获年度编程语言奖!

2021年渐入尾声&#xff0c;TIOBE今日发布了12月排行榜&#xff0c;Java(第3)持续下滑&#xff0c;PHP(第12)跌出前十&#xff0c;而C#(第5)继续稳步增长。据悉&#xff0c;TIOBE的CEO Paul Jansen表示&#xff0c;C#极有可能获取“TIOBE 年度编程语言奖”。该奖项一般颁发给被…

史上最接近上帝的方程!神秘的数字4.669,目前没有人能解开这个谜语......

全世界只有3.14 % 的人关注了爆炸吧知识上帝指纹统治世界&#xff1f;春节进入倒计时&#xff0c;实不相瞒&#xff0c;超模君想鸽的心蠢蠢欲动&#xff0c;费了好大劲才摁住&#xff01;为了不鸽&#xff0c;连夜翻了个墙&#xff0c;明明刚开始还在认认真真看论文&#xff0c…

html仿苹果浏览器,完美仿iPhone风格主题 领航浏览器体验

1仿iPhone的图标式导航页手机浏览器这个市场因其使用情况极为广泛和频繁因此吸引了无数厂商进入&#xff0c;不仅是传统的浏览器厂商也有许多新晋的手机软件厂商&#xff0c;其产品也从强调省流量、云概念、操作体验和自主核心、HTML 5等功能不一而足&#xff0c;今天带来的体验…

【JavaScript】关于eval( )

为什么80%的码农都做不了架构师&#xff1f;>>> 一、eval() 动态执行时使用当前函数的闭包。 var i 100; function myFunc(ctx) {var i test;eval(var test "hello."); //test执行后为局部变量 } myFunc(); // 输出值100 alert(i); 二、eva l() 访问…

在ASP.Net Core和JAVA中,使用Azure配置密钥——Key Vault

思路浅析 在软件开发中&#xff0c;项目安全是重中之重&#xff0c;特别是在多部门或者开源项目中&#xff0c;如何保存我们的密钥&#xff0c;但又不影响本地的开发&#xff0c;更需要我们开发者需要考虑的问题&#xff0c;这里简单的列举了下平时开发中我们做的…

我怀疑对象做了什么对不起我的事......

1 狗狗已经这么明显提醒你了▼2 传销老总都怕的传销......▼3 和一只狗撞衫了▼4 你信吗&#xff1f;我跳水不会湿头发&#xff01;▼5 东北雪糕行业繁荣的原因还挺在理▼6 打了个平手&#xff1f;▼7 缅甸网红苏娜英腰围35公分她还想减▼8 哈哈哈哈▼你点的每个赞&…

记一次 .NET 某市附属医院 Web程序 偶发性CPU爆高分析

一&#xff1a;背景 1. 讲故事这个月初&#xff0c;一位朋友加微信求助他的程序出现了 CPU 偶发性爆高&#xff0c;希望能有偿解决一下。从描述看&#xff0c;这个问题应该困扰了很久&#xff0c;还是医院的朋友给力&#xff0c;开门就是 100块 红包 &#x1f923;&#x1f923…