公司业务需求需要把.rtf文件转化成文本文件。

package chuyuanxiaojie;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.StringReader;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.zip.ZipInputStream;import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.rtf.RTFEditorKit;public class Indexer {public static void main(String[] args) {for (int i = 0; i < 5; i++)new Thread(new tRunnable(i)).start();}public static Connection getConnection() {Connection conn = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");conn = DriverManager.getConnection("jdbc:oracle:thin:@IP:1521:ORCL", "账号", "密码");System.out.println("success");} catch (Exception e) {e.printStackTrace();}return conn;}public static Connection getConnectionnyns() {Connection conn = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");conn = DriverManager.getConnection("jdbc:oracle:thin:@IP:1521:ORCL", "账号", "密码");System.out.println("success");} catch (Exception e) {e.printStackTrace();}return conn;}public static String hex2str(byte[] b1) {String str = null;try {byte[] b2 = null;ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(b1));while (zis.getNextEntry() != null) {byte[] tmp = new byte[1024];int num = -1;ByteArrayOutputStream baos = new ByteArrayOutputStream();while ((num = zis.read(tmp, 0, tmp.length)) != -1)baos.write(tmp, 0, num);b2 = baos.toByteArray();baos.flush();baos.close();}zis.close();DefaultStyledDocument dsd = new DefaultStyledDocument();new RTFEditorKit().read(new ByteArrayInputStream(b2), dsd, 0);str = new String(dsd.getText(0, dsd.getLength()).getBytes("ISO8859_1"), "gbk");str = str.replaceAll("[A-Z]{2}\\(\\d{8},\\d,\\d\\)", "");} catch (Exception e) {e.printStackTrace();}return str;}}class tRunnable implements Runnable {public int num;public tRunnable(int num) {this.num = num;}@Overridepublic void run() {try {Connection conn = new Indexer().getConnection();Connection connnyns = new Indexer().getConnectionnyns();int startCount = num * 900000;int endCount = startCount + 900000;conn.setAutoCommit(false);PreparedStatement ps = connnyns.prepareStatement("insert into medical_record values(?,?,?)");System.out.println("线程" + num + "开始  " + startCount + "--"+ endCount);for (int i = startCount, j = 0; i < endCount; i += 3000) {ResultSet rs = conn.createStatement().executeQuery("select * from (select a.文件ID,a.内容,b.创建时间,rownum rn from 电子病历格式 a,电子病历记录 b where a.文件ID=b.ID and b.文件ID='29' and rownum<="+ (i + 3000) + ") where rn>" + i);while (rs.next()) {Blob blob = rs.getBlob(2);byte[] b1 = blob.getBytes(1, (int) blob.length());String s = Indexer.hex2str(b1);ps.setLong(1, rs.getLong(1));ps.setCharacterStream(2, new StringReader(s), s.length());ps.setDate(3, rs.getDate(3));ps.executeUpdate();}conn.commit();rs.close();j += 3000;System.out.println("线程" + num + "完成" + j + "条记录");}} catch (Exception e) {e.printStackTrace();}}
}

java中.rtf文件变成文本文件相关推荐

  1. 在Java中确定文件类型

    以编程方式确定文件的类型可能非常棘手,并且已经提出并实现了许多基于内容的文件标识方法. Java中有几种可用于检测文件类型的实现,其中大多数很大程度上或完全基于文件的扩展名. 这篇文章介绍了Java中 ...

  2. java中各种文件的相互转化

    java中各种文件的相互转化 前几天一直在进行rtf文件流转化为HTML,折腾了好久,文件的格式转化都无法成功.后来找到了一个新的包(aspose),总算解了我的燃眉之急.现在记录分享一下. 1.使用 ...

  3. java中写入文件_java中创建、写入文件的5种方式

    在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. Files.newBufferedWriter(Java 8) Files. ...

  4. Java中的文件输入输出操作如何实现

    Java是一门广泛应用的编程语言,它被用于开发各种类型的应用程序,包括桌面应用.服务器端应用和移动应用.在Java中,文件输入输出操作是很常见的,因为它们可以用于读取和写入文件数据.在本文中,我们将探 ...

  5. java中打开文件怎么实现_Java如何在程序中打开文件?

    有时需要在java程序中打开一个文件.java.awt.Desktop可用于在java中打开文件.Desktop实现依赖于平台,因此首先,应该检查操作系统是否支持Desktop类.此类查找注册到当前平 ...

  6. java中打开文件显示_从java程序中打开任何文件

    在 java中打开文件似乎有点棘手 – 对于.txt文件,必须将File对象与Scanner或BufferedReader对象结合使用 – 对于图像IO,必须使用 ImageIcon类 – 如果要打开 ...

  7. java语言 文件上传,java中实现文件上传的方法

    java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...

  8. java中读取文件的方法

    总结一下java中读取文件的方法: 方法一(逐行的读取文件内容): private FileReader fileReader; private BufferedReader bufferedRead ...

  9. 服务器测试文件怎么创建,如何创建一个“FTPS”模拟服务器以单元测试Java中的文件传输...

    我有一个创建FTPS连接的CreateFTPConnection类.使用此连接传输文件.这里是TransferFile类的代码如何创建一个"FTPS"模拟服务器以单元测试Java中 ...

  10. java 获取文件扩展名_如何在Java中获取文件扩展名

    java 获取文件扩展名 Sometimes while working with files, we need to process them differently based on their ...

最新文章

  1. hdu 2795 公告板 (单点最值)
  2. tomcat 配置异常/404页面
  3. aes离线解密工具_如何在Python中解密OpenSSL AES加密文件?
  4. Spring-tx-TransactionInterceptor类
  5. EtherCAT主站SOEM函数详解----SDO读写函数
  6. 迅捷pdf虚拟打印机怎么安装打印
  7. [MTK][FAQ20888] 开关机、重启时间优化
  8. 【Ware】C++编程软件
  9. java三国鼎立,网页游戏三国鼎立(武三国)一键服务端带教程及修改说明
  10. 计算机专业笔记本电脑华为,大学生不知道买什么电脑?来看这款华为荣耀极致性价比笔记本!...
  11. 完整的渗透测试实战纪实,低危漏洞组合成高危利用!
  12. RedisTemplate常用操作工具类封装,实现一个函数添加,删除,更新及对应批量操作
  13. 《MySQL数据库》之练习表数据:emp表与dept表的脚本整理
  14. stm32采集脉冲信号_随机脉冲信号采集卡的设计
  15. Shell脚本案例:实现局域网扫描功能
  16. Windows Xp 开机画面 Logo修改
  17. word文档出现乱码的解决方法
  18. 手机wifi可以连接路由器但是上不了网,为什么?
  19. 贝塞尔函数matlab代码
  20. sublime用星号多行注释的快捷键

热门文章

  1. 软件产品管理系统有哪些?12个最佳产品管理工具盘点
  2. pci总线扫描及pci网卡驱动
  3. 触摸屏的校准方法(转)
  4. 2019-9-2-贡献自己的服务器搭建tor中转
  5. android打电话录音软件,Android uni-app实现音视频通话
  6. ffmpeg截取jpg图_使用ffmpeg进行视频封面截取
  7. Modem Device on High Definition Audio Bus
  8. 牛顿法求函数零点和极值点
  9. 基于QT和DCMTK的Dicom 图像浏览器---收尾二
  10. 达梦(DM8)数据库实例