普通文本文件我知道,可以按行分出去让各个线程执行现在想问一下如何读写一个二进制文件,类似迅雷多线程上传下载,给个思路或者代码,谢谢!

解决方案 »

  1.   

    RandomAccessFile,看看这个类能解决否?
      

  2.   

    二进制的文件用字节流去读写就可以啊(不要用字符流),如zip文件什么的,可以用BufferedOutputStream包装一下就可以啊,读也是一样,提高效率的话可以尝试用nio
    FileChannel fc=new FileOutputStream(File file).getChannel()...
      

  3.   

    就是用文件的长度/buf的大小,能整除就是那个整数那么块,不能就+1块,然后同理去分线程。。
      

  4.   

    应该方法一样吧!用多线程  用流dataStream 实现
      

  5.   

    用文件长度除以你建立的线程数得到a,前n-1个线程都读取相对应的长度为a的文件,最后一个读取剩下的长度,避免不能整除时文件读不全的问题。
      

  6.   

    key点是读写嘛?
    key点是多线程吧
      

  7.   

    原理是这样的:
    1、获得文件的总长度
    2、根据用户设置的个数启动对应个数个读取线程,例如5
    3、使用RandomAccessFile,第一个线程从文件0字节开始读,第二个线程从文件1/5的位置向后读,依次类推
    4、将读取到的内容组合到一个文件中,第一个线程读取的数据从新文件的0字节开始写入,第二个从1/5的位置开始写入。