java分割大文件和合并小文件实例(转)

  1. importjava.io.BufferedReader;
  2. importjava.io.BufferedWriter;
  3. importjava.io.File;
  4. importjava.io.FileInputStream;
  5. importjava.io.FileOutputStream;
  6. importjava.io.IOException;
  7. importjava.io.InputStream;
  8. importjava.io.InputStreamReader;
  9. importjava.io.OutputStream;
  10. importjava.io.OutputStreamWriter;
  11. /**
  12. *对文件进行分割与合并的工具
  13. *
  14. *@authorAdministrator
  15. */
  16. publicclassCutJoinFile{
  17. privatestaticintMAX_PART=100;//最大分割100分,以免手误引起麻烦
  18. publicstaticvoidmain(String[]args)throwsIOException{
  19. Stringfilname="d:/cvs.rar";
  20. cutFileBin(filname,2*1024*1024);//二进制文件为例
  21. joinFileBin(filname);//二进制文件为例
  22. }
  23. /**
  24. *分割文本文件
  25. *
  26. *@paramfileName文件名
  27. *@paramsize每个分割小文件的尺寸
  28. *@throwsIOException
  29. */
  30. publicstaticvoidcutFileText(StringfileName,intsize)throwsIOException{
  31. BufferedReaderreader=newBufferedReader(newInputStreamReader(newFileInputStream(fileName)));
  32. intindex=fileName.lastIndexOf(".");
  33. Stringext="";
  34. if(index>0){
  35. ext=fileName.substring(index);
  36. fileName=fileName.substring(0,index);
  37. }
  38. intlen;
  39. intcount=1;
  40. char[]cbuf=newchar[size];
  41. while((len=reader.read(cbuf,0,size))!=-1){
  42. BufferedWriterwriter=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(fileName+"_"+count+ext)));
  43. writer.write(cbuf,0,len);
  44. writer.flush();
  45. writer.close();
  46. count++;
  47. if(count>MAX_PART){
  48. break;
  49. }
  50. }
  51. }
  52. /**
  53. *分割二进制文件
  54. *
  55. *@paramfileName文件名
  56. *@paramsize每个分割小文件的尺寸
  57. *@throwsIOException
  58. */
  59. publicstaticvoidcutFileBin(StringfileName,intsize)throwsIOException{
  60. InputStreamis=newFileInputStream(fileName);
  61. intindex=fileName.lastIndexOf(".");
  62. Stringext="";
  63. if(index>0){
  64. ext=fileName.substring(index);
  65. fileName=fileName.substring(0,index);
  66. }
  67. intlen;
  68. intcount=1;
  69. byte[]cbuf=newbyte[size];
  70. while((len=is.read(cbuf,0,size))!=-1){
  71. OutputStreamos=newFileOutputStream(fileName+"_"+count+ext);
  72. os.write(cbuf,0,len);
  73. os.close();
  74. count++;
  75. if(count>MAX_PART){
  76. break;
  77. }
  78. }
  79. }
  80. /**
  81. *合并文本文件
  82. *
  83. *@paramfileName文件名,不包括编号部分
  84. *@throwsIOException
  85. */
  86. publicstaticvoidjoinFileText(StringfileName)throwsIOException{
  87. intindex=fileName.lastIndexOf(".");
  88. Stringext="";
  89. if(index>0){
  90. ext=fileName.substring(index);
  91. fileName=fileName.substring(0,index);
  92. }
  93. BufferedWriterwriter=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(fileName+"_join"+ext)));
  94. intlen;
  95. char[]cbuf=newchar[1024*100];
  96. Filefile;
  97. for(inti=1;i<=Integer.MAX_VALUE;i++){
  98. file=newFile(fileName+"_"+i+ext);
  99. if(!file.exists()){
  100. break;
  101. }
  102. BufferedReaderreader=newBufferedReader(newInputStreamReader(newFileInputStream(file)));
  103. while((len=reader.read(cbuf,0,cbuf.length))!=-1){
  104. writer.write(cbuf,0,len);
  105. writer.flush();
  106. }
  107. reader.close();
  108. }
  109. writer.close();
  110. }
  111. /**
  112. *合并二进制文件
  113. *
  114. *@paramfileName文件名,不包括编号部分
  115. *@throwsIOException
  116. */
  117. publicstaticvoidjoinFileBin(StringfileName)throwsIOException{
  118. intindex=fileName.lastIndexOf(".");
  119. Stringext="";
  120. if(index>0){
  121. ext=fileName.substring(index);
  122. fileName=fileName.substring(0,index);
  123. }
  124. OutputStreamwriter=newFileOutputStream(fileName+"_join"+ext);
  125. intlen;
  126. byte[]cbuf=newbyte[1024*100];
  127. Filefile;
  128. for(inti=1;i<=Integer.MAX_VALUE;i++){
  129. file=newFile(fileName+"_"+i+ext);
  130. if(!file.exists()){
  131. break;
  132. }
  133. InputStreamreader=newFileInputStream(file);
  134. while((len=reader.read(cbuf,0,cbuf.length))!=-1){
  135. writer.write(cbuf,0,len);
  136. writer.flush();
  137. }
  138. reader.close();
  139. }
  140. writer.close();
  141. }
  142. }
import java.io.BufferedReader;   
import java.io.BufferedWriter;   
import java.io.File;   
import java.io.FileInputStream;   
import java.io.FileOutputStream;   
import java.io.IOException;   
import java.io.InputStream;   
import java.io.InputStreamReader;   
import java.io.OutputStream;   
import java.io.OutputStreamWriter;   
  
/**  
 * 对文件进行分割与合并的工具  
 *   
 * @author Administrator  
 */  
public class CutJoinFile {   
  
  private static int MAX_PART = 100; // 最大分割100分,以免手误引起麻烦   
  
  public static void main(String[] args) throws IOException {   
    String filname = "d:/cvs.rar";   
    cutFileBin(filname, 2 * 1024 * 1024); // 二进制文件为例   
    joinFileBin(filname); // 二进制文件为例   
  }   
  
  /**  
   * 分割文本文件  
   *   
   * @param fileName 文件名  
   * @param size 每个分割小文件的尺寸  
   * @throws IOException  
   */  
  public static void cutFileText(String fileName, int size) throws IOException {   
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));   
    int index = fileName.lastIndexOf(".");   
    String ext = "";   
    if (index > 0) {   
      ext = fileName.substring(index);   
      fileName = fileName.substring(0, index);   
    }   
    int len;   
    int count = 1;   
    char[] cbuf = new char[size];   
    while ((len = reader.read(cbuf, 0, size)) != -1) {   
      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName + "_" + count + ext)));   
      writer.write(cbuf, 0, len);   
      writer.flush();   
      writer.close();   
      count++;   
      if (count > MAX_PART) {   
        break;   
      }   
    }   
  }   
  
  /**  
   * 分割二进制文件  
   *   
   * @param fileName 文件名  
   * @param size 每个分割小文件的尺寸  
   * @throws IOException  
   */  
  public static void cutFileBin(String fileName, int size) throws IOException {   
    InputStream is = new FileInputStream(fileName);   
    int index = fileName.lastIndexOf(".");   
    String ext = "";   
    if (index > 0) {   
      ext = fileName.substring(index);   
      fileName = fileName.substring(0, index);   
    }   
    int len;   
    int count = 1;   
    byte[] cbuf = new byte[size];   
    while ((len = is.read(cbuf, 0, size)) != -1) {   
      OutputStream os = new FileOutputStream(fileName + "_" + count + ext);   
      os.write(cbuf, 0, len);   
      os.close();   
      count++;   
      if (count > MAX_PART) {   
        break;   
      }   
    }   
  }   
  
  /**  
   * 合并文本文件  
   *   
   * @param fileName 文件名,不包括编号部分  
   * @throws IOException  
   */  
  public static void joinFileText(String fileName) throws IOException {   
    int index = fileName.lastIndexOf(".");   
    String ext = "";   
    if (index > 0) {   
      ext = fileName.substring(index);   
      fileName = fileName.substring(0, index);   
    }   
  
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName + "_join" + ext)));   
    int len;   
    char[] cbuf = new char[1024 * 100];   
    File file;   
    for (int i = 1; i <= Integer.MAX_VALUE; i++) {   
      file = new File(fileName + "_" + i + ext);   
      if (!file.exists()) {   
        break;   
      }   
      BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));   
      while ((len = reader.read(cbuf, 0, cbuf.length)) != -1) {   
        writer.write(cbuf, 0, len);   
        writer.flush();   
      }   
      reader.close();   
    }   
    writer.close();   
  }   
  
  /**  
   * 合并二进制文件  
   *   
   * @param fileName 文件名,不包括编号部分  
   * @throws IOException  
   */  
  public static void joinFileBin(String fileName) throws IOException {   
    int index = fileName.lastIndexOf(".");   
    String ext = "";   
    if (index > 0) {   
      ext = fileName.substring(index);   
      fileName = fileName.substring(0, index);   
    }   
    OutputStream writer = new FileOutputStream(fileName + "_join" + ext);   
    int len;   
    byte[] cbuf = new byte[1024 * 100];   
    File file;   
    for (int i = 1; i <= Integer.MAX_VALUE; i++) {   
      file = new File(fileName + "_" + i + ext);   
      if (!file.exists()) {   
        break;   
      }   
      InputStream reader = new FileInputStream(file);   
      while ((len = reader.read(cbuf, 0, cbuf.length)) != -1) {   
        writer.write(cbuf, 0, len);   
        writer.flush();   
      }   
      reader.close();   
    }   
    writer.close();   
  }   
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值