你应该读一点,输出一点,而不是全部读取到内容
请参考这个,只占用1K的内容
http://www.java2000.net/viewthread.jsp?tid=279

解决方案 »

  1.   

    谢谢!请问有没有按rar压缩文件下载的例子,这样能提高效率吧?
      

  2.   

    客户一定有rar吗?如果有,你提前把文件压缩了再下载不适更好!
      

  3.   

    可以用BLOB啊.任意大文件上传,任意下载。
    Update date code:
    上传的部步骤
    第一步可以建表,如:
    create table blob_table (id number primary key,filename varchar(20),blob_date blob)
    第二部
    插入一个"空blob"
    insert into blob_table values(?,?,empyt_blob());
    第三部
    sql = "select blob_date from blob_date for update"可以修改游标值
    PreparedStatement ps = conn.getprepareStatement(sql); 
    rs=ps.executeQuery();
    while(rs!=null&&rs.next())
    Blob = rs.getBlob(1);
    rs.close();
    ps.close();
    第四步设置IO
    用InputStream is = new FileInputStream("fileName");
    OutputStream os = blob.get..stream();
    然后读取写到blob
    下面在update下就OK了
    第五部
    sql = "update blob_table from blob_date = ? where id = 1;
    ps = conn.get...();
    ps.setBlob(1,blob);
    ps.execute...到这里已经成功上传大文件
    下面是如何下载,其实很简单,就是得到blob对象,然后用这个对象在读出来流就OK了,步骤如下sql = "select blob_date from blob_table";
    ps = conn.getPrepared...(sql);
    rs = ps.executeQuare();
    while(rs.next()){blob = rs.getblob(1)
    }第二部设置流
    InputStream is= blob.get...stream();
    OutputStream os= fileOutputstream();要下载到哪个盘;
    byte[] b = new byte[1024];//1kb
    int n =0;
    while((n=is.read(b))!=-1) os.write(b,0,n)成功下载咯。
      

  4.   

    to java2000_net :
    客户虽然没有要求用rar,但如果我先压缩成rar,文件就小了很多倍,再下载,速度应该快很多吧?
      

  5.   

    我现在不知道怎么压缩成rar呢
      

  6.   

    什么服务器,linux?window?用runtime.exec(String command)方法运行压缩的命令具体的自己应该可以解决了吧
      

  7.   

    to   java2000_net   : 我是在服务器上处理,应该是要先下载在服务器上的驱动器上吧,然后再读取。服务器上文件路径我无法定位。