`
awaitdeng
  • 浏览: 214684 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

写入ZIP压缩文件与XML 文件到oracle数据库

 
阅读更多
public boolean addFileContent(final DocTransfer docTransfer, String enconding, boolean isBom, String fileName) {
		boolean bool = false;	StringBuffer updateXmlSqlStr = new StringBuffer();
		// DOC_TRANSFER_BACKUP DOC_TRANSFER
		String sql2 = updateXmlSqlStr.append("insert into ").append(" EDI.DOC_TRANSFER(").append(" FILE_TRANS_ID , BUSINESS_ID,MESSAGE_ID,FUNCTION_CODE,MESSAGE_TYPE,REPRESENTATIVE_PERSON_NAME,")
				.append(" SENDER_CODE,RECEIVER_CODE,TRANS_FILE_NAME,SEND_STATUS,SEND_USER,SEND_TIME,OLD_VERSION_FILE_NAME,SGN_COMPANY,TRANS_FILE_CONTENT ) ")
				.append(" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,empty_Blob()) ").toString();

		processUpdateWithoutBatch(sql2, new PreparedStatementSetter() {

			public void setValues(PreparedStatement ps) throws SQLException {
				long currentTime = System.currentTimeMillis();
				if (docTransfer.getSendTime() != null) {
					currentTime = docTransfer.getSendTime().getTime();
				}
				ps.setLong(1, docTransfer.getFileTransId().longValue());
				// System.out.println("numbrId="+docTransfer.getBusinessId());
				ps.setLong(2, docTransfer.getFileTransId().longValue());
				ps.setString(3, docTransfer.getMessageId());
				ps.setString(4, docTransfer.getFunctionCode());
				ps.setString(5, docTransfer.getMessageType());
				ps.setString(6, docTransfer.getRepresentativePersonName());
				ps.setString(7, docTransfer.getSenderCode());
				ps.setString(8, docTransfer.getReceiverCode());
				ps.setString(9, docTransfer.getTransFileName());
				ps.setString(10, docTransfer.getSendStatus());
				ps.setString(11, docTransfer.getSendUser());// SGN_COMPANY
				ps.setTimestamp(12, new Timestamp(currentTime));
				ps.setString(13, docTransfer.getOldVersionFileName());
				ps.setString(14, docTransfer.getSgnCompany());
			}
		});
		updateXmlSqlStr.setLength(0);
		updateXmlSqlStr.append("select TRANS_FILE_CONTENT ").append("from EDI.DOC_TRANSFER ").append("  where FILE_TRANS_ID=?").append(" for update");

		final java.sql.Blob blob = (java.sql.Blob) processQuery(updateXmlSqlStr.toString(), new PreparedStatementSetter() {
			public void setValues(PreparedStatement ps) throws SQLException {
				System.out.println("numbrId=" + docTransfer.getFileTransId());
				ps.setLong(1, docTransfer.getFileTransId().longValue());

			}
		}, new ResultSetCallBacker() {
			public Object extractData(ResultSet rs) throws SQLException {
				java.sql.Blob blob = null;
				if (rs.next()) {
					blob = rs.getBlob(1);// rs.getClob(1);
					// log.info("CLob==="+String.valueOf(clob));
				}
				return blob;
			}
		});
		try {

			OutputStream out = (OutputStream) MethodUtils.invokeMethod(blob, "getBinaryOutputStream", null);
			BufferedWriter writer = null;
			File file = new File(fileName);
			InputStream fin = new FileInputStream(file);
			if (docTransfer.getTransFileName().endsWith(".ZIP")) {
				// 将输入流写到输出流
				byte[] buffer = new byte[1024];
				int len = 0;
				while ((len = fin.read(buffer)) != -1) {
					out.write(buffer, 0, len);
					out.flush();
				}
				// 依次关闭(注意顺序)
				fin.close();
				out.close();
			} else if(docTransfer.getTransFileName().endsWith(".xml")||docTransfer.getTransFileName().endsWith(".XML")){
				//String S = new String (docTransfer.getTransFileContent().getBytes("UTF-8"));
				BufferedReader br = new BufferedReader(new InputStreamReader(fin,"UTF-8"));
				
				String data = null;
				while ((data = br.readLine()) != null) {
					//System.out.println(data);
					out.write(data.getBytes("UTF-8"));
					out.flush();
				}
				br.close();
				out.close();
				fin.close();
			}else{
	   			if(!ManifestDeclConstats.DOC_CONTENT_ENCODING_UTF_8.equals(StringHelp.toUpperString(StringHelp.trimNull(enconding)))){
	   				if(isBom==true){
	   					final byte[] bom = new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF };
		   				out.write(bom);	
	   				}
	   			  writer = new BufferedWriter(new OutputStreamWriter(out,"GBK"));
	   			}else{
	   				if(isBom==true){
	   					final byte[] bom = new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF };
		   				out.write(bom);	
	   				}	
	   				
	   			 writer = new BufferedWriter(new OutputStreamWriter(out,ManifestDeclConstats.DOC_CONTENT_ENCODING_UTF_8));
	   			}
	   			writer.write(docTransfer.getTransFileContent());
	   			fin.close();
	   			writer.close();
	   			out.close();
			}

		} catch (Exception e) {
			log.info("获取数据错误");
			bool = false;
			return bool;
			// throw new RuntimeException(e);
		}
		
		updateXmlSqlStr.setLength(0);
		updateXmlSqlStr.append("update ").append("EDI.DOC_TRANSFER set TRANS_FILE_CONTENT =?  where FILE_TRANS_ID=?").toString();
		processUpdateWithoutBatch(updateXmlSqlStr.toString(), new PreparedStatementSetter() {
			public void setValues(PreparedStatement ps) throws SQLException {
				// ps.setClob(1, clob);
				ps.setBlob(1, blob);
				// ps.setString(2, mftSendRecords.getTransFileContent());
				ps.setLong(2, docTransfer.getFileTransId().longValue());
			}
		});
		
		return true;
分享到:
评论

相关推荐

    Oracle SQL Hand-Oracle工具 v5.1.zip

    Oracle SQL Hand-Oracle工具,是专为Oracle数据库开发人员及操作人员精心打造的一款Oracle开发工具(客户端工具)。 Oracle SQL Hand-Oracle工具特点如下: (1) 跨平台,能运行于平台 Windows(WIN7,XP...)、Linux 、...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目源代码

    Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库应用。全书分5篇24章,共计603个实例和603个经验技巧。每个实例都...

    OPCDAAutoTest.zip

    C# 获取OPC完整项目 opc服务通过模拟器模拟 并 通过LOG4写入到ORACLE 数据库(ITEM、服务器ID和名称:通过XML文件配置)

    Oracle开发工具 - Oracle SQL Handler(功能强大,超方便好用, 免装客户端, Windows / Linux)

    (请将下载的 ZIP 文件解压到一目录,鼠标双击批处理文件 start.bat 即可启动运行) 主要功能如下: 将 SELECT 语句的查询结果显示在工作表,可以直接对查询结果进行再操作,如 修改、 插入行、删除行、提交(将...

    java开源包1

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包11

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包2

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包3

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包6

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包5

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包10

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包4

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包8

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

    java开源包7

    缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java...

Global site tag (gtag.js) - Google Analytics