Java는 IO 스트림을 사용하여 큰 파일의 분할 및 병합을 실현합니다.
파일 세분화는보다 실용적인 기능이어야합니다. 예를 들어, 한 컴퓨터에서 다른 컴퓨터로 복사 해야하는 3G 파일이있는 경우 스토리지 장치 (예 : SD 카드)는 1G에 불과합니다. 현재 파일을 3 1G 파일로 자르고 별도로 복사 한 다음 세 개의 파일을 병합하여 문제를 해결할 수 있습니다. 예를 들어, FTP에 업로드 할 수백 m의 파일이 있지만 FTP는 단일 파일을 10m 초과하지 않도록 제한합니다. 현재 파일 세분화를 사용하여 문제를 해결할 수도 있습니다. 나누기 때문에 다시 사용할 때 병합해야합니다. 오늘날 우리는 Java 코드를 통해 파일 분할 및 병합 기능을 구현할 것입니다.
이제 내 컴퓨터에서 파일을 시연하여 시연 할 것입니다. 파일 디렉토리는 다음과 같습니다.
다음 그림은 분할 전 상황을 보여줍니다.
분할 후 상황은 다음과 같습니다.
자바에서 파일을 분할하는 방법 :
// 파일 분할 방법 (분할 할 파일 경로를 전달하고 메서드에서 분할 될 사본 수를 전달) 개인 정적 무효 SplitFileDemo (파일 SRC, int M) {if (src.isfile ()) {// 파일의 총 길이를 Long L = Src.length (); // 파일 이름 문자열 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 (filename) .append ( "_ data"). Append (i) .append (endname); System.out.println (sb.toString ()); file2 = 새 파일 (sb.tostring ()); // 파일을 작성하기 위해 출력 스트림을 만듭니다. outputStream out = new FileOutputStream (file2); int len = -1; 바이트 [] 바이트 = 새로운 바이트 [10*1024*1024]; while ((len = in.read (bytes))! = -1) {out.write (bytes, 0, len); if (file2.length ()> (l / m)) {break; }} out.close (); }} catch (예외 e) {e.printstacktrace (); } 마침내 {try {in.close (); } catch (ioexception e) {e.printstacktrace (); }}}} Java는 파일을 병합합니다.
// 파일 병합 메소드 (병합을위한 파일 경로에서 전달) 개인 정적 무효 joinedemo (string ... src) {for (int i = 0; i <src.length; i ++) {file file = 새 파일 (src [i]); 문자열 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 ()); 시도 {// 작은 파일의 입력 스트림을 읽으십시오. inputStream in = new FileInputStream (파일); // 큰 파일의 출력 스트림을 작성 파일 파일 2 = 새 파일 (sb.toString ()); outputStream out = 새 FileOutputStream (file2, true); int len = -1; 바이트 [] 바이트 = 새로운 바이트 [10*1024*1024]; while ((len = in.read (bytes))! = -1) {out.write (bytes, 0, len); } out.close (); 넣다(); } catch (예외 e) {e.printstacktrace (); }} system.out.println ( "파일 병합이 완료되었습니다!");}나는 그것이 글을 쓰기 전에 꽤 복잡하다고 생각했지만 그것을 쓰고 나서 나는 그것이 바로 그 것이라고 생각했다. 당신은 당신의 기술을 연습 할 수 있습니다.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!