为了账号安全,请及时绑定邮箱和手机立即绑定

文件处理的问题

把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);            
        }


正在回答

1 回答

既然图片能写入,为什么文字不行,按理说用的一个流如果没有格式限制就没有问题,这我也看不出什么问题。不过给你几个建议,你可以调试一下看看传文本的时候哪里阻塞了导致数据过不去,还有catch块不要抛出太多,可以用父类代替,最重要的一点。。。为什么没注释,还好代码不长也不难,要是复杂点真想回答的看一眼也觉得烦。。。

0 回复 有任何疑惑可以回复我~
#1

红袖侍读 提问者

非常感谢!刚才再跑,莫名数据就有了
2016-07-03 回复 有任何疑惑可以回复我~
#2

汉娜之眼 回复 红袖侍读 提问者

哦哦,
2016-07-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java Socket应用---通信是这样练成的
  • 参与学习       125013    人
  • 解答问题       590    个

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

进入课程

文件处理的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信