2014-06-12 1 views
1

에 7기가바이트 파일 크기를 만들려고 :내가 특정 크기의 파일을 생성하기 위해이 코드 발견 자바

import java.io.*; 

    class Test { 
    public static void main(String args[]) { 
     try { 
      RandomAccessFile f = new RandomAccessFile("t", "rw"); 
      f.setLength(1024 * 1024 * 1024); 
     } catch (Exception e) { 
      System.err.println(e); 
     } 
    } 
    } 

이 나에게 1GB의 제공을,하지만 난 7기가바이트을 원하는, 그래서 내가했다 :

import java.io.*; 

    class Test { 
    public static void main(String args[]) { 
     try { 
      RandomAccessFile f = new RandomAccessFile("t", "rw"); 
      f.setLength(1024 * 1024 * 1024 * 7); 
     } catch (Exception e) { 
      System.err.println(e); 
     } 
    } 
    } 

하지만 난 점점 오전 :

때 java.io.IOException를 : 시도가 파일의 시작 부분 앞으로 파일 포인터를 이동하려고했습니다

,

누구든지 무엇을 해야할지 알고 있습니까?

+0

값'1024 * 1024 * 1024 * 7' 오버 플로우를. –

+0

멍청한 질문입니다. 디스크에 충분한 공간이 있습니까? –

답변

7

7GB (바이트 단위)는 int의 32 비트 크기를 초과합니다. 따라서 음수로 오버플로됩니다.

그래서 당신은 오랫동안 그것을을해야합니다

f.setLength(1024l * 1024 * 1024 * 7); 
+0

+1 탁월한 캐치. –

+0

C#에는 산술 오버플로를 감지하는 컴파일러 옵션이 있습니다. Java에는 동일한 기능이 없습니다. –

관련 문제