자바 는 IO 흐름 을 사용 하여 큰 파일 의 분할 과 통합 인 스 턴 스 를 상세 하 게 설명 합 니 다.

자바 는 IO 흐름 을 사용 하여 큰 파일 의 분할 과 합병 을 실현 합 니 다.
파일 분할 은 비교적 실 용적 인 기능 이 라 고 할 수 있 습 니 다.예 를 들 어 설명 하 세 요.예 를 들 어 3G 파일 을 한 컴퓨터 에서 다른 컴퓨터 로 복사 해 야 합 니 다.그러나 당신 의 저장 장치(예 를 들 어 SD 카드)는 1G 밖 에 없습니다.이 때 이 파일 을 3 개의 1G 파일 로 자 르 고 따로 복사 한 다음 에 세 개의 파일 을 합 쳐 문 제 를 해결 할 수 있 습 니 다.예 를 들 어,당신 은 수백 M 에 달 하 는 파일 을 FTP 에 업로드 해 야 합 니 다.그러나 이 FTP 는 하나의 파일 이 10m 를 초과 하지 못 하도록 제한 할 때 도 파일 분할 방법 으로 문 제 를 해결 할 수 있 습 니 다.분 단 된 이상 우리 가 다시 사용 할 때 합병 이 필요 합 니 다.오늘 우 리 는 자바 코드 를 통 해 파일 분열 과 합병 을 실현 할 수 있 습 니 다.
현재 이 컴퓨터 의 파일 을 보 여 줍 니 다.파일 디 렉 터 리 는 E:\eclipse-jee-juno-win 32.zip 입 니 다.
다음 그림 은 분할 전의 상황 입 니 다.

분할 후의 상황 은:

자바 파일 분할 방법:

//       (                     )
private static void splitFileDemo(File src, int m) {
 if(src.isFile()) {
  //        
  long l = src.length();
  //     
  String fileName = src.getName().substring(0, src.getName().indexOf("."));
  //      
  String endName = src.getName().substring(src.getName().lastIndexOf("."));
  System.out.println(endName);
  InputStream in = null;
  try {
   in = new FileInputStream(src);
   for(int i = 1; i <= m; i++) {
    StringBuffer sb = new StringBuffer();
    sb.append(src.getParent()).append("\\").append(fileName)
    .append("_data").append(i).append(endName);
    System.out.println(sb.toString());
    File file2 = new File(sb.toString());
    //         
    OutputStream out = new FileOutputStream(file2);
    int len = -1;
    byte[] bytes = new byte[10*1024*1024];
    while((len = in.read(bytes))!=-1) {
     out.write(bytes, 0, len);
     if(file2.length() > (l / m)) {
      break;
     }
    }
    out.close();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  finally {
   try {
    in.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
}
자바 가 파일 을 병합 하 는 방법:

//       (          )
private static void joinFileDemo(String... src) {
 for(int i = 0; i < src.length; i++) {
  File file = new File(src[i]);
  String fileName = file.getName().substring(0, file.getName().indexOf("_"));
  String endName = file.getName().substring(file.getName().lastIndexOf("."));
  StringBuffer sb = new StringBuffer();
  sb.append(file.getParent()).append("\\").append(fileName)
  .append(endName);
  System.out.println(sb.toString());
  try {
   //         
   InputStream in = new FileInputStream(file);
   //         
   File file2 = new File(sb.toString());
   OutputStream out = new FileOutputStream(file2,true);
   int len = -1;
   byte[] bytes = new byte[10*1024*1024];
   while((len = in.read(bytes))!=-1) {
    out.write(bytes, 0, len);
   }
   out.close();
   in.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 System.out.println("      !");
}
쓰기 전에 매우 복잡 하 다 고 느 꼈 고,다 쓴 후에 도 그렇다 고 느 꼈 으 니,모두 도 연습 을 할 수 있다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기