文件處理的問題
把JDBC和oracle的內(nèi)容學(xué)完后回來做這個(gè)項(xiàng)目,在老師視頻里代碼的關(guān)鍵提示下終于完成了,由于我的navicat里只能顯示數(shù)據(jù)庫里存儲(chǔ)文 件的大小不能像老師那樣直接顯示內(nèi)容,于是我在服務(wù)端又創(chuàng)建了一個(gè)文件,把內(nèi)容寫進(jìn)去。奇怪的是,如果客戶端傳的文件是圖片,服務(wù)端的文件能寫成功,可以 看到圖片,但如果客戶端傳的是文本,服務(wù)端的文件就寫不進(jìn)去,大小為0. 但是數(shù)據(jù)庫里文件是添加成功了的,所以問題出在我的本地文件寫入操作上,試了很多辦法,都找不出原因,把這段代碼貼一下,就是依樣畫葫蘆,客戶端怎么用bis讀 進(jìn)byte數(shù)組的,服務(wù)端我就怎么用bos把byte數(shù)組寫進(jìn)文件,自己實(shí)在找不出問題在哪兒,求大神指教
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
既然圖片能寫入,為什么文字不行,按理說用的一個(gè)流如果沒有格式限制就沒有問題,這我也看不出什么問題。不過給你幾個(gè)建議,你可以調(diào)試一下看看傳文本的時(shí)候哪里阻塞了導(dǎo)致數(shù)據(jù)過不去,還有catch塊不要拋出太多,可以用父類代替,最重要的一點(diǎn)。。。為什么沒注釋,還好代碼不長也不難,要是復(fù)雜點(diǎn)真想回答的看一眼也覺得煩。。。