2014-08-27 1 views
1

내 프로그램에서 URL의 모든 XML 데이터를 항상 쓰지 않고 .txt 파일에 추가하는 데 어려움을 겪고 있습니다. 앞서 언급 한 파일에 이미있는 데이터를 채널을 통해 업로드 된 .txt 파일에 XML 데이터를 가져 오기 위해이 프로그램을 사용하려고합니다.이 파일은 나중에 참조됩니다.새 코드가있는 .txt 파일을 덮어 쓰는 대신 코드를 함께 사용하여 데이터를 결합하는 방법

filename = new File("xmlData.txt"); 
filename.createNewFile(); 

while (flag1 == 0) 
{ 
    URL url = new URL("https://gdata.youtube.com/feeds/api/users/"+Name+"/uploads? max-query=50&start-index="+index); 

    try (BufferedReader br = new BufferedReader(
    new InputStreamReader(url.openStream()))) 
    {     
     while ((inputLine = br.readLine()) != null) 
     {   
      try (BufferedWriter bw = new BufferedWriter(new FileWriter(filename))) 
      { 
       bw.write(inputLine); 
       bw.newLine(); 
      } 
     } 
    } 

    if (count1 < 25) 
    { 
     index = index+50; 
     count1++; 
    } 
    else 
    { 
     flag1 = 1; 
    } 
} 

System.out.println("Done writing to xmlData.txt"); 

답변

1

파일 작성자에 대한 두 번째 매개 변수는 boolean append입니다. Java FileWriter with append modehttp://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html#FileWriter(java.io.File,%20boolean)

new BufferedWriter(new FileWriter(filename, true))) 
+0

완벽하게 작동했습니다. 감사합니다. – CamthraX

+0

@CamthraX 여기에서 조언을 구해야합니다 http://stackoverflow.com/a/25531376/227299, 루프에서 여러 작성자를 여는 이유가 확실하지 않습니다. –

2

FileWriter 생성자, append 두 번째, 부울, 매개 변수를 전달 할 수 있도록 않습니다를 참조하십시오.

Javadoc의 상태 :

는 File 객체를 지정해 FileWriter 객체를 구축합니다. 두 번째 인수가 true이면 바이트는 시작 부분이 아닌 파일의 끝에 쓰여집니다.

매개 변수 :
파일 파일 객체는true 있다면, 오히려

그래서 처음보다 파일의 끝 부분에 기록됩니다 바이트
추가하려면 쓰기 다음과 같이 FileWriter를 만드십시오.

new FileWriter(filename, true); 

또한, 나는 외부의 파일을 열 것이다. 이렇게하면 XML 파일 (URL)에서 읽는 동안 파일을 한 번 열어 파일에 추가합니다.

+1

+1 "외부에서 작성자 열기 루프 ", 나는 생각했다, 왜 OP가 그렇게 했습니까? –

+0

나를 두들겨! OP가 새로운 [Try with Resources Statement] (http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)를 사용하고 있으므로 그 이유가 무엇입니까? –

+0

tbh 나는 그것을 생각조차하지 않았다. 원래 gdata가 모든 비디오에 대해 모든 XML 데이터를 제공 할 것이라고 생각했기 때문에 루프없이 시작되었습니다. 그러나 50 개의 결과 만 반환하고 다음 50 개에 대한 색인을 생성해야합니다. 그래서 나는 방금 플래그와 카운터로 루프를 던졌습니다. 지금 모든 걸 바꿀거야. – CamthraX

관련 문제