2012-04-23 3 views
0

일부 음성 태그의 가능한 모든 이진 조합을 매핑하는 파일을 만들려고하고 있는데, 제가 작성한 Java 프로그램이 8192 바이트 후에 막 중단됩니다. 나는 이것이 최대 버퍼 크기라고 생각 하나? 어떻게 바꿀 수 있습니까?JAVA 인쇄기가 8192 바이트에서 버퍼 크기를 늘립니다.

내 코드 :

try { 
     Scanner in = new Scanner(new FileInputStream(file.getPath())); 
     PrintWriter out = new PrintWriter(new FileOutputStream("S2.gr")); 
     createS2(in, out); 
    } catch (Exception e) { 
     System.out.println("There was an error trying to open the files: " + e.getMessage()); 
    } 


private static void createS2(Scanner in, PrintWriter out) { 
    String[] pos = in.useDelimiter("\\A").next().split("\\n"); 
    out.println("1\tS2"); 
    for (String x : pos) { 
     out.println("1\tS2\t_" + x);  
    } 
    for (String x : pos) { 
     String temp = ("1\t_" + x + "\t" + x); 
     out.println(temp); 
     for (String y : pos) { 
      out.println(temp + " _" + y); 
     } 
    } 
    for (String x : pos) { 
     System.out.println(x); 
    } 
} 
+2

PrintWriter를 플러시/닫기 하시겠습니까? 그렇게하지 않으면 PrintWriter 버퍼에 작성한 일부 내용이 플러시되거나 닫힐 때까지 파일에 나타나지 않을 수 있습니다. –

+0

버퍼 크기는 결과가 아니라 성능에 영향을줍니다. – MeBigFatGuy

+0

[BufferedWriter] (http://docs.oracle.com/javase/6/docs/api/java/io/BufferedWriter.html)를보십시오 – jellyfication

답변

0

이 시도 ...

Scanner in = null; 
    PrintWriter out = null; 
    try { 
     in = new Scanner(new FileInputStream(file.getPath())); 
     out = new PrintWriter(new FileOutputStream("S2.gr")); 
     createS2(in, out); 
    } catch (Exception e) { 
     System.out.println("There was an error trying to open the files: " + e.getMessage()); 
    } 
    finally { 
     if(in != null) in.close(); 
     if(out != null) out.close(); 
    } 

참고 : 자바 7 사용하는 경우,이 쉽게 할 수있는 새로운 기능이있다. 예 :

 try (Scanner in = new Scanner(new FileInputStream(file.getPath())); 
      PrintWriter out = new PrintWriter(new FileOutputStream("S2.gr"))) 
    { 
     createS2(in, out); 
    } catch (Exception e) { 
     System.out.println("There was an error trying to open the files: " + e.getMessage()); 
    } 

참고 : 나는 순간에 나에게 JDK 사용할 수 7이없는, 그래서 두 번째 예는 100 % 정확하지 않을 수도 있지만, 아이디어는 새로운 언어 기능이 당신을 위해 닫는 자원을 관리 할 수 ​​있다는 것입니다 .

관련 문제