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,一经查实,立即删除!

相关文章

基于DDD的.NET开发框架 - ABP工作单元(Unit of Work)

返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点&#xff0c;它旨在成为一个通用的WEB应用程序框架和项目模板。 ABP的官方网站&#xff1a;http://www.aspnetboilerp…

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

全世界只有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…

Java里面的arraycopy总结

当我们需要两个数组之和建立一个新的数组的时候&#xff0c;我以为数组也像字符串一样&#xff0c;相加就可以&#xff0c;错了&#xff0c;需要用到arraycopy arraycopy(被复制的数组, 从第几个元素开始复制, 要复制到的数组, 从第几个元素开始粘贴, 一共需要复制的元素个数);…

C#的dapper使用

Dapper是.NET下一个micro的ORM&#xff0c;它和Entity Framework或Nhibnate不同&#xff0c;属于轻量级的&#xff0c;并且是半自动的。Dapper只有一个代码文件&#xff0c;完全开源&#xff0c;你可以放在项目里的任何位置&#xff0c;来实现数据到对象的ORM操作&#xff0c;体…

android什么是回调,Android中的回调是什么?

小编典典回调的概念是在另一个类中完成某些工作时通知类同步/异步。有人称其为好莱坞原则&#xff1a;“不要叫我们&#xff0c;我们叫你”。这是一个例子&#xff1a;class A implements ICallback {MyObject o;B b new B(this, someParameter);Overridepublic void callback…

Andorid之bitmap里面的压缩总结

public Bitmap decodebitmap(Context context, int imageid) {BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;// 如果值设为true,那么将不返回实际的bitmap,也不给其分配内存空间,这样就避免了内存溢出。Bitmap bitmap =…

Android -- 创建XML文件对象及其序列化, pull解析XML文件

1. 创建XML文件对象及其序列化 示例代码&#xff1a;&#xff08;模拟以xml格式备份短信到SD卡&#xff09; SmsInfo.java&#xff0c; bean对象 /*** 短信的业务bean* author Administrator**/ public class SmsInfo {private String body;private String number;private int …

.NET大会2021参会笔记

全面拥抱Linux拥抱linux是微软的战略转型。Satya Nadella写的书《refresh》&#xff0c;就提到了MS loves Linux。所以&#xff0c;大会一开始&#xff0c;以然是Scott Hanselman&#xff0c;给我们演示如果在linux上面使用.net。好了&#xff0c;好了&#xff0c;你不用说了&a…

zookeeper配置文件详解

zoo.cfg配置文件 # The number of milliseconds of each tick tickTime2000 # The number of ticks that the initial # synchronization phase can take initLimit10 # The number of ticks that can pass between # sending a request and getting an acknowledgement sync…

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 …

Android之判断手机黑屏以及锁屏

1、黑屏 /** * 判断是否黑屏 * param c * return */ public final static boolean isScreenLocked(Context c) { android.app.KeyguardManager mKeyguardManager (KeyguardManager) c.getSystemService(c.KEYGUARD_SERVICE); return !mKeyguardManager.inKeyguardRestricte…

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

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

html5设置不缓存页面,页面的缓存与不缓存设置

HTML的HTTP和谈头信息中把握着页面在几个处所的缓存信息&#xff0c;包含浏览器端&#xff0c;中心缓存办事器端(如&#xff1a;squid等)&#xff0c;Web办事器端。本文评论辩论头信息 中带缓存把握信息的HTML页面(JSP/Servlet生成好出来的也是HTML页面)在中心缓存办事器中的缓…

Ubuntu 10.10, 11.04, 11.10这三个版本无法从优盘启动

问题&#xff1a;Ubuntu 10.10, 11.04, 11.10这三个版本无法从优盘启动 解决&#xff1a;从U盘启动安装的时候&#xff0c;会卡住不动。搞定办法相当简单&#xff0c;修改syslinux/syslinuxfg文件&#xff1a;将default vesamenu32这句话注释掉即可&#xff0c;即&#xff1a;将…

.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"…

使用反射将DataTable的数据转成实体类

利用反射避免了硬编码出现的错误&#xff0c;但是实体类的属性名必须和数据库名字对应&#xff08;相同&#xff09; 1、利用反射把DataTable的数据写到单个实体类 /// <summary>///利用反射把DataTable的数据写到单个实体类/// </summary>/// <typeparam name&…