2008年5月1日 Edited By DingDangXiaoMa
Java 对文件的操作有很多种方法,类也很多,这里举出最简单的测试例子,读取文件输入输出数据库操作。
以下是部分源代码:
package com.zh.wsdy.dao;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.zh.wsdy.model.AjPrgWsmb;
import com.zh.wsdy.model.BaseHibernateDAO;
import com.zh.wsdy.model.Wtest;
//测试读写文件及读文件到数据库中。。。
public class TestDAO extends BaseHibernateDAO {
private static final int BUFFER_SIZE = 16 * 1024;
public TestDAO() {
}
/**
* 测试程序,把读取一个文件,把个文件的内容,以字节的形式保存到数据中去。
*/
public void saveFileStreamToDataBase(String id) {
// 先进进行数据库方面的操作。连接及新建类。
Session session = getSession();
Wtest test = new Wtest(id);
// 以下是文件的定义。
File file = new File("c:" + File.separator + "response.txt");
// File file = new File("c:" + File.separator + "a.java");
// File file = new File("c:" + File.separator + "word.doc");
try {
FileInputStream inputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(
inputStream);
byte[] buffer = new byte[BUFFER_SIZE];
while (bufferedInputStream.read(buffer) > 0) {
test.setWcontent(buffer);
}
Transaction trac = session.beginTransaction();
trac.begin();
session.save(test);
System.out.println("插入一条数据成功.");
trac.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 传递主键参数,从数据库中读取数据。
*
* @param id
*/
public void ReadDataBaseStreamToString(String id) {
Session session = getSession();
Query query = session.createQuery("from AjPrgZdms m where m.FId =:id");
// Query query = session.createQuery("from Wtest t where t.wid =:id ");
query.setString("id", id);
AjPrgWsmb test = (AjPrgWsmb) query.list().get(0);
// Wtest test = (Wtest)query.list().get(0);
// byte [] content = test.getWcontent();
byte[] content = test.getFWsys();
System.out.print(content); // 在这里直接输出字节,没有进行字符串的转换。
// String contentString = new String(content); //进行转换,把字节转换成String
// System.out.print("the String is : "+contentString);
}
/**
* 从数据库读取byte型数据,写入当地文件,看一下,写入与原始文件的差别。
*
* @param id
*/
public void writeFileFromDataBase(String id) {
Session session = getSession();
Query query = session.createQuery("from Wtest t where t.wid =:id");
query.setString("id", id);
Wtest test = (Wtest) query.list().get(0);
byte[] content = test.getWcontent();
try {
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream("c:\\word2.doc"));
out.write(content);
System.out.println("从数据库中读取数据,并写入相应的文件中。。。");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.print(content); //在这里直接输出字节,没有进行字符串的转换。
}
/**
* 这个测试的方法是,从AjPrgWsmb表中,读取数据,写入到相应的文件中去。
*
* @param id
*/
public void writeFile(String id) {
Session session = getSession();
Query query = session.createQuery("from AjPrgWsmb m where m.FId =:id");
// Query query = session.createQuery("from Wtest t where t.wid =:id ");
query.setString("id", id);
AjPrgWsmb test = (AjPrgWsmb) query.list().get(0);
// Wtest test = (Wtest)query.list().get(0);
// byte [] content = test.getWcontent();
//byte[] content = test.getFWsys();
byte[] content = test.getFContent();
if(content!=null){
try {
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream("c:\\word2.doc"));
out.write(content);
System.out.println("从数据库中读取数据,并写入相应的文件中。。。");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("这个文书模板样式为空值。。。。。");
}
}
/**
* @param args
*/
public static void main(String[] args) {
TestDAO test = new TestDAO();
// test.saveFileStreamToDataBase("txt"); // 保存一条数据到数据库中,主键为txt,word,java
// test.ReadDataBaseStreamToString("word");
// test.writeFileFromDataBase("0000000010");
test.writeFile("0000000023");
}
}
以上的例子很简单,是一些普通的文件的操盘。