一个抓取网页音视频的程序,现在能够成功抓取,但是当抓取的任务文件太大,就会报内存溢出之错。在程序中设了一个缓存。
有人提议:当内存中所抓取的数据超过某一个值(比如2M)时,就将其写入硬盘,并将相应的内存释放掉。 
怎样将缓冲区的内容读入硬盘呢?谢谢

解决方案 »

  1.   

    可以参考下NIO
    也可以参考下log4j的实现方式
      

  2.   

    简单点的话,写入一个文件就可以了。
    新建一个BufferedWriter,当从网络读取数据的时候,直接写入BufferedWriter,当写入的字节数达到某一个值的时候,就可以flush一下。
    然后继续写入。
    当然,这个值比较大的时候,要注意测试一下,有可能会缓冲区溢出,这样,有些数据会丢失。