2014-02-20 6 views
1

나중에 처리 할 계획이었던 큰 텍스트 블록 만 포함 할 텍스트 파일에 쓰려고합니다. 내가 처리해야하는 많은 변수의 조합이 있고 그것을 모두 타이핑하는 것은 너무 지루합니다. 나는이 코드를 두 번 실행하려고 시도했다. 그리고 가능한 한 마지막 변수 조합을 제공하면서 반복적으로 첫 번째 라인을 덮어 쓴다. 이것은 코드입니다.자바 - 파일의 끝에 텍스트 추가

import java.util.*; 
import java.io.*; 
public class FileWritingThing { 
    public static void main(String[]args) throws IOException{ 
     String precision = null; 
     String criteria = null; 
     String specLevel = null; 
     String precondLevel = null; 
     PrintWriter writer = null;  

     for(int i = 0; i < 3; i++){ 
      if(i == 0){ 
       precision = "Precision = 4;"; 
      } 
      if(i == 1){ 
       precision = "Precision = 8;"; 
      } 
      if(i == 2){ 
       precision = "Precision = 12;"; 
      } 
      for(int j = 0; j < 3; j++){ 
       if(j == 0){ 
        criteria = "Objective Function;"; 
       } 
       if(j == 1){ 
        criteria = "Domain;"; 
       } 
       if(j == 2){ 
        criteria = "Objective Function + Domain;"; 
       } 
       for(int k = 0; k < 3; k++){ 
        if(k == 0){ 
         specLevel = "Speculation Level = 10000;"; 
        } 
        if(k == 1){ 
         specLevel = "Speculation Level = 100000;"; 
        } 
        if(k == 2){ 
         specLevel = "Speculation Level = 1000000;"; 
        } 
        for(int l = 0; l < 3; l++){ 
         if(l == 0){ 
          precondLevel = "Precondition Level = 0;"; 
         } 
         if(l == 1){ 
          precondLevel = "Precondition Level = 25;"; 
         } 
         if(l == 2){ 
          precondLevel = "Precondition Level = 100;"; 
         } 
         writer.println(precision + "\n" + criteria + "\n" + specLevel + "\n" + precondLevel + "\n"); 
        } 
       } 
      } 
     } 
    writer.close(); 
} 

}

/*try { 
    writer = new PrintWriter(new BufferedWriter(new FileWriter("permutations.txt", true))); 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (UnsupportedEncodingException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
*/ 

내가 알아야 할 모든 파일 라인에 각 블록을 추가하는 방법이다. 또한 변수 목록을 구분하기 위해 "\ n"을 포함하더라도 모든 항목이 한 줄에 표시되는 이상한 문제가 발생합니다. 하단의 코멘트 된 코드는 원래 "writer.println()"라인 직전에 포함되었습니다.

+0

중복이 가능한가? http://stackoverflow.com/questions/1625234/how-to-append-text-to-an-existing-file-in-java –

+0

@ 존 도리안 좋아, 그 파일에 글쓰기 문제를 해결하는 것 같지만 새 줄로 인쇄하지 마십시오. 다시 말하지만,이 텍스트는 모두 함께 묶여 있습니다. – user3308219

+0

원하는 라인마다 writer.println()을 별도로 호출 해보십시오. 작동 여부는 확실치 않습니다. writer.println (정밀도)과 비슷합니다. writer.println (criteria); writer.println (specLevel); 기타 –

답변

1

주석 처리 된 줄이 writer.println() 바로 위에 있으면 사용자가 겪고있는 이상한 동작을 설명 할 수 있습니다. for 루프 외부에서 PrintWriter를 작성해야합니다. 이 같은 것이

PrintWriter writer = null; 
try { 
    writer = new PrintWriter(new BufferedWriter(new FileWriter("permutations.txt", true))); 
    // Most outer for loop goes here 
    for(int i=0......) { 
    } 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (UnsupportedEncodingException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch(Exception e) { e.printStackTrace(); } 
finally { 
    if(writer!=null) { 
     try { 
      writer.flush(); 
      writer.close(); 
     } catch(Exception ignore) {} 
    } 
}