2014-04-20 2 views
0

이전 게시물을 읽고 프로젝트에 코드를 통합하려고했습니다. 내 txt 파일에서 정수를 읽으려고합니다. 나는이 방법을 사용하고 있습니다 :Java에서 파일에서 정수를 올바르게 읽는 방법

static Object[] readFile(String fileName) throws FileNotFoundException { 
    Scanner scanner = new Scanner(new File(fileName)); 
    List<Integer> tall = new ArrayList<Integer>(); 
    while (scanner.hasNextInt()) { 
     tall.add(scanner.nextInt()); 
    } 

    return tall.toArray(); 
} 

나는 데이터의 크기를 모르는를, 그래서 내가 주 호출 방법 목록 을 사용하고 있습니다 : 나는 배열의 크기가 있음을 얻고있다

Object [] arr = readFile("C:\\02.txt"); 
System.out.println(arr.length); 

0; 파일에서 읽으려고하는 정수가 바이너리 시퀀스입니다. (1010101010 ...) 나는이 문제가 스캐너와 연결되어 있다고 생각하는데 아마도 정수가 아니라고 생각한다.

+0

난 적이 없다 스캐너에 대한 많은 사랑을 가지고 있었고, 필자의 개인적인 접근 방법은 숫자가 줄에 있으면 텍스트 파일로 읽고 Integer.parseInt()를 사용하여 구문 분석하는 것입니다. – MightyPork

+0

글쎄, 나는 당신의 제안을 할 것이고 공백이있는 비트가 분리되어있을 때 옆에 텍스트처럼 파일을 읽습니다. –

+0

입력 파일이 너무 크지 않은 경우 문자열로 모두로드하고 정규식으로 파싱 할 수 있습니다. 작은 파일 (수 킬로바이트)의 경우 매우 빠르고 효율적입니다. – MightyPork

답변

1

의 경우, 당신은 대신 BufferReader을 사용할 수 있습니다처럼 범위됩니다

String line = ""; 
List<Integer> tall = new ArrayList<Integer>(); 
try { 
    BufferedReader br = new BufferedReader(new FileReader(fileName)); 
    while ((line = br.readLine())!= null) { 
     tall.add(Integer.parseInt(line, 2)); 
    } 
    br.close(); 
}catch(IOException e) {} 
0

바이너리 형식으로 데이터를 읽는 경우 nextInt 또는 hasNextInt을 기수와 함께 사용하는 것이 좋습니다.

while (scanner.hasNextInt(2)) { 
    tall.add(scanner.nextInt(2)); 
} 

그렇지 않으면 당신은 값이 정수에서 할 수 있도록 소수로 정수를 읽고

11111111111111111111111111111111 
관련 문제