數(shù)據(jù)加載中……
          Java 文件操作
          2008年5月1日   Edited By DingDangXiaoMa
          Java 對文件的操作有很多種方法,類也很多,這里舉出最簡單的測試例子,讀取文件輸入輸出數(shù)據(jù)庫操作。
          以下是部分源代碼:
          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;

          //測試讀寫文件及讀文件到數(shù)據(jù)庫中。。。
          public class TestDAO extends BaseHibernateDAO {
              
          private static final int BUFFER_SIZE = 16 * 1024;

              
          public TestDAO() {

              }

              
          /**
               * 測試程序,把讀取一個文件,把個文件的內(nèi)容,以字節(jié)的形式保存到數(shù)據(jù)中去。
               
          */
              
          public void saveFileStreamToDataBase(String id) {
                  
          // 先進進行數(shù)據(jù)庫方面的操作。連接及新建類。
                  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(
          "插入一條數(shù)據(jù)成功.");
                      trac.commit();
                  } 
          catch (Exception e) {
                      e.printStackTrace();
                  }
              }

              
          /**
               * 傳遞主鍵參數(shù),從數(shù)據(jù)庫中讀取數(shù)據(jù)。
               * 
               * 
          @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); 
          // 在這里直接輸出字節(jié),沒有進行字符串的轉(zhuǎn)換。
                  
          // String contentString = new String(content); //進行轉(zhuǎn)換,把字節(jié)轉(zhuǎn)換成String
                  
          // System.out.print("the String is : "+contentString);
              }

              
          /**
               * 從數(shù)據(jù)庫讀取byte型數(shù)據(jù),寫入當?shù)匚募匆幌拢瑢懭肱c原始文件的差別。
               * 
               * 
          @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(
          "從數(shù)據(jù)庫中讀取數(shù)據(jù),并寫入相應(yīng)的文件中。。。");
                  } 
          catch (Exception e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  
          // System.out.print(content); //在這里直接輸出字節(jié),沒有進行字符串的轉(zhuǎn)換。
              }

              
          /**
               * 這個測試的方法是,從AjPrgWsmb表中,讀取數(shù)據(jù),寫入到相應(yīng)的文件中去。
               * 
               * 
          @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(
          "從數(shù)據(jù)庫中讀取數(shù)據(jù),并寫入相應(yīng)的文件中。。。");
                  } 
          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"); // 保存一條數(shù)據(jù)到數(shù)據(jù)庫中,主鍵為txt,word,java
                  
          // test.ReadDataBaseStreamToString("word");
                  
          // test.writeFileFromDataBase("0000000010");
                  test.writeFile("0000000023");

              }

          }
          以上的例子很簡單,是一些普通的文件的操盤。

          posted on 2008-05-01 17:04 叮當小馬 閱讀(239) 評論(0)  編輯  收藏 所屬分類: JSP/JAVA

          主站蜘蛛池模板: 邮箱| 吉木萨尔县| 肥东县| 陇南市| 陆河县| 新巴尔虎右旗| 桐庐县| 璧山县| 崇明县| 宜章县| 临澧县| 奎屯市| 抚远县| 柯坪县| 嫩江县| 汾西县| 瑞安市| 囊谦县| 恩平市| 达州市| 安福县| 商河县| 手游| 县级市| 微山县| 兴和县| 田东县| 鹿泉市| 中牟县| 扎囊县| 墨江| 太湖县| 会宁县| 五大连池市| 探索| 皋兰县| 绿春县| 页游| 三都| 广河县| 达孜县|