欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现两个文件的拼接

程序员文章站 2024-02-15 09:08:28
用java语言实现两个文件的拼接与上一篇用java实现两个文件的异或使用的方法都一样,都是fileinputstream()与fileoutputstream()方法,两个...

用java语言实现两个文件的拼接与上一篇用java实现两个文件的异或使用的方法都一样,都是fileinputstream()与fileoutputstream()方法,两个相同大小的文件a,b,把文件b拼接在文件a之后,输出的文件名为outfile具体代码详见下述内容:

import java.io.file;
import java.io.fileinputstream;
import java.io.filenotfoundexception;
import java.io.fileoutputstream;
import java.io.ioexception;


public class append 
{
  static int count=0;
  static int countb=0;

  public static void main(string args[]) throws ioexception
  {
     fileinputstream filea = new fileinputstream("d:\\javaxor\\a");
     fileinputstream fileb = new fileinputstream("d:\\javaxor\\b");
     file outfile=new file("d:\\javaxor\\outfile");
     int filesizea=filea.available();//计算文件的大小
     int filesizeb=fileb.available();
     fileoutputstream fos=new fileoutputstream(outfile);

     int hasreada = 0;
     int hasreadb=0;

     byte[] bufa=new byte[1024];
     byte[] bufc=new byte[1024];
     byte[] buf_yua=new byte[filesizea%1024];
     byte[] buf_yub=new byte[filesizeb%1024];

     while( (hasreada=filea.read(bufa) )>0 )
      {
      if(count<filesizea-filesizea%1024)
      {  
        for(int i=0;i<bufa.length && count<filesizea-filesizea%1024;i++)
         {

          bufc[i]=(byte)(bufa[i] & 0xff);
          count++;

         }
        fos.write(bufc);
      }
      else if(count>=filesizea-filesizea%1024 && count<filesizea)
      {

        for(int j=0; count>=filesizea-filesizea%1024 && count<filesizea ;j++)
        {
          buf_yua[j]=(byte)(bufa[j] & 0xff);
          count++;

        }
        fos.write(buf_yua);
      }

      }

     while( (hasreadb=fileb.read(bufa) )>0 )
      {
      if(countb<filesizeb-filesizeb%1024)
      {  
        for(int i=0;i<bufa.length && countb<filesizeb-filesizeb%1024;i++)
         {

          bufc[i]=(byte)(bufa[i] & 0xff);
          countb++;

         }
        fos.write(bufc);
      }
      else if(countb>=filesizeb-filesizeb%1024 && countb<filesizeb)
      {

        for(int j=0; countb>=filesizeb-filesizeb%1024 && countb<filesizeb ;j++)
        {
          buf_yub[j]=(byte)(bufa[j] & 0xff);
          countb++;

        }
        fos.write(buf_yub);
      }



      } 

  }


}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。