文件處理的問題
把JDBC和oracle的內容學完后回來做這個項目,在老師視頻里代碼的關鍵提示下終于完成了,由于我的navicat里只能顯示數據庫里存儲文 件的大小不能像老師那樣直接顯示內容,于是我在服務端又創建了一個文件,把內容寫進去。奇怪的是,如果客戶端傳的文件是圖片,服務端的文件能寫成功,可以 看到圖片,但如果客戶端傳的是文本,服務端的文件就寫不進去,大小為0. 但是數據庫里文件是添加成功了的,所以問題出在我的本地文件寫入操作上,試了很多辦法,都找不出原因,把這段代碼貼一下,就是依樣畫葫蘆,客戶端怎么用bis讀 進byte數組的,服務端我就怎么用bos把byte數組寫進文件,自己實在找不出問題在哪兒,求大神指教
public?void?addFileRecord(File?file){ ????????conn=DBUtil.getConnection(); ????????String?path="F:/sample/"+file.getFileName(); ????????FileOutputStream?fos=null; ????????BufferedOutputStream?bos=null; ???????? ????????try{ ????????????String?sql="insert?into?"+FILETABLE+ ????????????????????"?values(sq_file.nextval,?,?,?)"; ????????????ps=conn.prepareStatement(sql); ????????????ps.setString(1,?file.getFileName()); ????????????ps.setBytes(2,?file.getFileContent()); ????????????ps.setString(3,?path); ???????????? ????????????fos=new?FileOutputStream(path); ????????????bos=new?BufferedOutputStream(fos); ????????????bos.write(file.getFileContent()); ????????????bos.flush(); ????????????ps.executeUpdate(); ????????}catch(SQLException?e){ ????????????e.printStackTrace(); ???????? ????????}?catch?(FileNotFoundException?e)?{ ????????????//?TODO?Auto-generated?catch?block ????????????e.printStackTrace(); ????????}?catch?(IOException?e)?{ ????????????//?TODO?Auto-generated?catch?block ????????????e.printStackTrace(); ????????}finally{ ????????????DBUtil.closeJDBC(rs,?ps,?conn);???????????? ????????}
2016-07-03
既然圖片能寫入,為什么文字不行,按理說用的一個流如果沒有格式限制就沒有問題,這我也看不出什么問題。不過給你幾個建議,你可以調試一下看看傳文本的時候哪里阻塞了導致數據過不去,還有catch塊不要拋出太多,可以用父類代替,最重要的一點。。。為什么沒注釋,還好代碼不長也不難,要是復雜點真想回答的看一眼也覺得煩。。。