比如在一个二进制文件中:01 03 AB CD 12 06 09 78
我要在AB和CD之间插入“01 02 03”,可我写入这数据的时候,却把后面的给复盖。
就变成了:01 03 AB 01 02 03 09 78  而不是我要的:01 03 AB 01 02 03 CD 12 06 09 78
请问有什么好办法插入此数据?

解决方案 »

  1.   

    把文件内容读出来然后分开处理
    File f = new File("test.bin") ;
    FileInputStream fis = new FileInputStream( f ) ;
    byte b[] = new byte[fis.available()] ;
    fis.read(b) ;
    int off = 0 ;
    for (int i = 0; i<b.length; i++)
    {
    if( b[i] == (byte)0xab )
    {
    off = i ;
    break ;
    }
    }
    FileOutputStream fos = new FileOutputStream(f) ;

    fos.write( b , 0, off+1 ) ;
    byte b2[] = { 1, 2, 3 } ;
    fos.write( b2 ) ;
    fos.write( b, off+1, b.length-off-1 ) ;
      

  2.   

    分开来读写,我也想过。但是如果文件很大,1G,或是几G的话,那不是很慢?
    有没有可以直接往里插入的,像String那样直接插入字符!