ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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();
    	}
    }

     

     

    댓글

Designed by Tistory.