java中怎样用多个线程把一个500M的文件读到另一个文件中呢=====我是新手,有么有那位大哥给我讲一讲原理是怎样的啊,(矛盾:如果多个线程读取文件的话,文件不就分割了吗,如果放进去之后,顺序不对的话,那个原先的文件不就破坏的吗

解决方案 »

  1.   

    用RandomAccessFile来处理。
    不过,你做这种文件Copy,瓶颈全都是磁盘IO本身,多线程根本不能提升文件复制的速度。
      

  2.   


    public class RandomAccessFileextends Objectimplements DataOutput, DataInput, Closeable此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。 通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种 IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是 EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException。