📄 zipserver.java
字号:
package gov.gdlt.ssgly.taxcore.taxblh.wdsc.zipwdsc;
import java.util.zip.*;
import java.io.*;
import gov.gdlt.ssgly.taxcore.comm.bizdelegate.SsglyDelegateRemote;
import gov.gdlt.ssgly.taxcore.comm.servicelocator.JDBCLocator;
import java.sql.Connection;
import gov.gdlt.ssgly.taxcore.taxevent.wdsc.WDSCyhswdscResEvent;
import gov.gdlt.ssgly.taxcore.taxevent.wdsc.WDSCyhswdscReqEvent;
import java.sql.Statement;
import java.sql.ResultSet;
/**
* <p>Title: </p>
*
* <p>Description: 广东地税税收管理员工作平台</p>
*
* <p>Copyright: Copyright (c) 2005 广东省地方税务局,广州市地方税务局</p>
*
* <p>Company: 广州地税</p>
* 一户式信息
* @author 张承华
* @version 1.0
*/
public class ZipServer {
public ZipServer() {
}
public static void main(String[] args) throws Exception {
ZipServer zipserver = new ZipServer();
Connection conn = null;
WDSCyhswdscReqEvent reqEvent = new WDSCyhswdscReqEvent();
WDSCyhswdscResEvent resEvent = null;
String sql = "";
Statement stmt = null;
ResultSet rs = null;
boolean bAutoCommit = false;
java.sql.Blob blob = null;
try {
SsglyDelegateRemote ssgly = new SsglyDelegateRemote();
reqEvent.setDealMethod("IgetConnection");
resEvent = (WDSCyhswdscResEvent)ssgly.invokeTask(reqEvent);
conn = resEvent.getConn();
//get file with local host c:\\test.htm
//创建一个文件实例
File f = new File("c:\\test.htm");
if (!f.exists()) {
return; //文件不存在,则返回
}
System.out.println("文件大小:" + String.valueOf(f.length()));
//用文件输入流构建ZIP压缩输入流
FileInputStream fIS = new FileInputStream(f);
//ZipInputStream zipis = new ZipInputStream(fIS);
/*
sql = "INSERT INTO db_ssgly.T_WDSC_WD (WD_MC, WD_SM, WD_NR, WDSC_SJ, WDXG_SJ, MB_BM, CZY_BM, SWJG ) VALUES ( '99999920051101', '压缩测试', EMPTY_BLOB(), to_date('2005-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), sysdate, '0001', 'olla', '%' )";
System.out.println(sql);
stmt = conn.createStatement();
stmt.execute(sql);
conn.commit();
*/
bAutoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
sql = " select * from db_ssgly.t_wdsc_wd where wd_mc = '99999920051101' for update ";
stmt = conn.createStatement();
stmt.execute("update db_ssgly.t_wdsc_wd set wd_nr = EMPTY_BLOB() where wd_mc = '99999920051101' ");
rs = stmt.executeQuery(sql);
if (rs.next()) {
blob = rs.getBlob("wd_nr");
}
OutputStream outstream = null;
outstream = ((weblogic.jdbc.vendor.oracle.OracleThinBlob)blob).getBinaryOutputStream();
//compress(outstream, fIS, (int)f.length());
outstream.close();outstream.close();
conn.commit();
conn.setAutoCommit(bAutoCommit);
//uncompress oracle blob
rs.close();
stmt.close();
stmt = conn.createStatement();
sql = " select * from db_ssgly.t_wdsc_wd where wd_mc = '99999920051101' ";
rs = stmt.executeQuery(sql);
if (rs.next()) {
blob = rs.getBlob("wd_nr");
System.out.println("blob.len=" + String.valueOf(blob.length()));
}
conn.commit();
long blobLen = blob.length();
InputStream input = ((java.sql.Blob)blob).getBinaryStream();
String s = uncompress(input, (int)blobLen);
input.close();
//System.out.println(s);
} catch (Exception e) {
throw new Exception(e.getMessage());
} finally {
if (conn != null) {
conn.setAutoCommit(bAutoCommit);
conn.close();
}
}
}
/*
public static OutputStream compress(OutputStream output, InputStream input, int len) throws Exception {
if (output == null || input == null || len <= 0) return output;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zipos = new ZipOutputStream(bos);
zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法
zipos.putNextEntry(new ZipEntry("olla"));
byte b[] = new byte[len];
input.read(b);
zipos.write(b);
zipos.close();
b = bos.toByteArray();
output.write(b);
} catch (Exception e) {
throw new Exception("压缩文件失败!错误信息:" + e.getMessage());
}
return output;
}
*/
//output:输出流
//str:待压入输出流的字符串
//返回输出字符串
//注:本方法不关闭output流,请另行关闭
public static OutputStream compress(OutputStream output, String str) throws Exception {
if (output == null || str == null) return output;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zipos = new ZipOutputStream(bos);
zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法
zipos.putNextEntry(new ZipEntry("olla"));
//用ZIP输出流构建DataOutputStream;
byte b[] = str.getBytes("iso-8859-1");
zipos.write(b);
zipos.flush();
zipos.close();
b = bos.toByteArray();
output.write(b);
bos.flush();
output.flush();
bos.close();
} catch (Exception e) {
throw new Exception("压缩文件失败!错误信息:" + e.getMessage());
} finally {
}
return output;
}
/*
public static String compress(OutputStream output, String str, String filename) throws Exception {
if (output == null || str == null) return "参数有误!";
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zipos = new ZipOutputStream(bos);
zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法
zipos.putNextEntry(new ZipEntry("olla"));
//用ZIP输出流构建DataOutputStream;
byte b[] = str.getBytes();
zipos.write(b);
zipos.close();
b = bos.toByteArray();
output.write(b);
if (!filename.equals("")) {
File f = new File(filename);
if (!f.exists()) {
if (!f.createNewFile())
return "创建文件" + filename + "失败!"; //文件不存在,则返回
}
//用文件输入流构建ZIP压缩输入流
FileOutputStream fOS = new FileOutputStream(f);
fOS.write(b);
fOS.close();
}
} catch (Exception e) {
throw new Exception("压缩文件失败!错误信息:" + e.getMessage());
}
return "压缩到文件" + filename + "成功!";
}
*/
//input:输入流
//len:输入流长度
//返回:输入流解压后的字符串
//注:本方法不关闭input流,请另行关闭
public static String uncompress(InputStream input, int len) throws Exception {
if (input == null) return "";
//System.out.println("compress file len=" + String.valueOf(len));
String retStr = "";
DataInputStream dis = null;
try {
byte bb[] = new byte[len];
input.read(bb);
ByteArrayInputStream bis = new ByteArrayInputStream(bb);
ZipInputStream zipis = new ZipInputStream(bis);
ZipEntry zipEntry = zipis.getNextEntry();
dis = new DataInputStream(zipis);
StringBuffer buffer = new StringBuffer();
int i = 0;
while ((i = dis.read()) != -1) {
buffer.append((char) i);
}
dis.close();
bis.close();
buffer = new StringBuffer(new String(buffer.toString().getBytes("iso-8859-1"), "gb2312"));
retStr = buffer.toString();
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e.getMessage());
} finally {
//input.close();
}
return retStr;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -