-
[FILE] 파일 분할 읽기java 2021. 4. 21. 13:22
byte 별로 파일을 분할하여 읽을 계획입니다.
1GB -> 1MB * 10
1. readFromByte : 필요 크기만 읽을 메소드
public ByteArrayOutputStream readFromByte(BufferedInputStream bis, long size, int checkByte) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { if(checkByte != -1) baos.write(checkByte); // 체크용으로 사용했던 byte를 추가 for(int b =0; (b = bis.read()) != -1;) { baos.write(b); int lll = baos.size(); if(baos.size()+1>size) break; } }catch (Exception e) { e.getMessage(); } return baos; }
위의 checkByte는 inputStream의 끝을 알기 위해 사용했던 byte이므로 만약 끝이 아닐 경우에는 추가를 시켜주어야 합니다.2. main : 정해둔 파일 크기만큼 잘라서 byte 처리를 수행할 수 있습니다.
public static void main(String[] args) { try { File file = new File("C:\\Users\\cho minjoon\\Downloads\\6기가.txt"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); // inputStream 상속받은 모든 객체 int dividByte = 1024*1024*100; // 1GB int checkByte = 0; boolean isTheEnd = false; long totalSize = 0; do { ByteArrayOutputStream baos = readFromByte(bis, dividByte, checkByte); totalSize += baos.size(); //바이트 처리 isTheEnd = (checkByte=bis.read()) != -1 ? isTheEnd = true : false; }while(isTheEnd); System.out.println("총 파일 사이즈"+totalSize); } catch (Exception e) { e.printStackTrace(); } }
'java' 카테고리의 다른 글
[AWS S3] 2버전 업그레이드 되면서 변경된 메소드 (0) 2021.07.02 [java] 자료형 정리 (0) 2021.06.24 [Aws SDK] CreateMultipartUploadRequest (0) 2021.04.13 [tibero, oracle] org.hibernate.HibernateException: (0) 2021.04.10 디자인패턴 Delegate pattern 예제 (0) 2021.04.04