代码在前天做好了,但是一直都没时间去修改,
偷下懒吧。
呵呵
放出来只是给大家一点参考。
我用的表示temp。中间有三个属性time(存储系统当前时间),title(文件名称),context(文件中文本内容),
其中测试的是在E盘下的test文件夹下的文件,(文件采用问txt的)。
oracle是10 XE版本的。驱动是class12.
下面就是代码了。
package PreparedTest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
public class lsat {
static String driverClass = "oracle.jdbc.driver.OracleDriver";
static String URL = "jdbc:oracle:thin:@localhost:1521:XE";
static String USERNAME = "system";
static String PASSWORD = "duduli";
static Connection con = null;
static Statement stmt = null;
static ResultSet rs = null;
static String filePathName = null;
static String fileName = null;
public static String getFileName(File file){
String filename = "";
if (file != null){
filename = file.getName();
int i = filename.lastIndexOf('.');
if (i > 0 && i < filename.length()-1){
return filename.substring(0,i);
}
}
return filename;
}
public static void clobInsert(String filepath)throws Exception {
try {
File file = new File(filepath);
if (file.isDirectory()) {
//System.out.println("文件夹");
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
Date dateNow = new Date(); // 取得当前时间
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh"); // 对时间进行格式化
String dateNowStr = dateFormat.format(dateNow);
System.out.println(dateNowStr);
File readfile = new File(filepath + "\\" + filelist[i]);
//文件扫描
filePathName = readfile.getAbsolutePath();
if (!readfile.isDirectory()) {
fileName = getFileName(readfile);
System.out.print("一个文件!\t");
System.out.println("文件名:"+fileName);
System.out.println("文件地址"+filePathName);
} else if (readfile.isDirectory()) {
fileName = getFileName(readfile);
System.out.print("一个文件夹!\t");
System.out.println("文件夹名:"+fileName);
System.out.println("文件夹地址:"+filePathName);
clobInsert(filepath + "\\" + filelist[i]);
}
boolean defaultCommit = con.getAutoCommit();
con.setAutoCommit(false);
try {
/* 插入一个空的CLOB对象 */
stmt.executeUpdate("INSERT INTO temp VALUES ('"+dateNowStr+"', '"+filePathName+"',EMPTY_CLOB())");
/* 查询此CLOB对象并锁定 */
ResultSet rs = stmt.executeQuery("SELECT context FROM temp WHERE title='"+filePathName+"' FOR UPDATE");
while (rs.next()) {
/* 取出此CLOB对象 */
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("context");
/* 向CLOB对象中写入数据 */
BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
BufferedReader in = new BufferedReader(new FileReader(fileName));
int c;
while ((c=in.read())!=-1) {
out.write(c);
}
in.close();
out.close();
}
/* 正式提交 */
con.commit();
} catch (Exception ex) {
/* 出错回滚 */
con.rollback();
}
/* 恢复原提交状态 */
con.setAutoCommit(defaultCommit);
}
}
/* 设定不自动提交 */
}
catch (FileNotFoundException e) {
System.out.println("readfile() Exception:" + e.getMessage());
}
}
public static void main(String[] args) throws Exception
{
/* 装载驱动,建立数据库连接 */
Class.forName(driverClass);
con = DriverManager.getConnection(URL,USERNAME,PASSWORD);
stmt = con.createStatement();
clobInsert("e:/test");
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
}
}
}
|
写得很凌乱,大家就勉强看看吧。