2013-04-19 3 views
0

ArrayList가 "MyCalendar.txt"에 쓰여지지 않는 이유는 무엇입니까? out.write()를 사용할 때도 여전히 false를 반환하지만 파일에 쓰지는 않습니다.내 ArrayList가 내 파일에 저장되지 않는 이유는 무엇입니까?

import java.util.*; 
import java.io.*; 

public static Boolean addAppointment(ArrayList<String> calendar, 
        String specifiedDay, 
         String specifiedTime) { 

PrintWriter out = new PrintWriter("myCalendar.txt"); //declare calendar file  


    for (int i = 0; i<calendar.size(); i++) { 
     String index = calendar.get(i); 
     if (index.equals(specifiedDay + "" + specifiedTime)) 
     { 
     out.println(specifiedDay + "" + specifiedTime); 
     return false; 
     } 
    } 
    return true; 
} 
+1

'printwriter out = new PrintWriter ("myCalendar.txt");'는'try' /'catch'에 의해 둘러싸여 있어야합니다. – syb0rg

답변

0

이 중요 스트림

out.flush(); 
out.close(); 

감사를 제출하고 닫 데이터를 플러시

+0

스트림을 닫으면 자동으로 스트림이 플러시됩니다. – syb0rg

+0

당신도 정확합니다. –

+0

고마워요! 우리는 수업 중 데이터를 플러시하는 법을 배우지 못했지만 분명히해야 할 일이었습니다. 또한 out.write (specifiedDay + specifiedTime + '\ n')를 사용하여 파일에 저장했습니다. – user2297278

0

당신이 그것을 닫습니다 잊어 : 2 아래

out.close() 
+0

종료하기 전에'out.flush()'을해야 할 수도 있습니다. –

+0

@Joe, close는 스트림을 닫기 전에 자동으로 내용을 파일로 플러시합니다. 플러시는 선택 사항입니다. –

0

그래서, 몇 여기에있는 것들.

Java 7을 사용하는 경우 try-with-resources을 사용해야합니다. 작업을 마친 후에 PrintWriter이 닫히게됩니다.

try (PrintWriter out = new PrintWriter("somefile.txt")) { 
    // code 
} catch (FileNotFoundException e) { 
    System.out.println("Bang!"); 
} 

다음, 파일을 쓸 수 없습니다있는 몇 가지 경우, 중 일부 또는 모두가 :

  • calendar.size() == 0
  • index.equals(specifiedDay + "" + specifiedTime)

경우] 첫 번째 조건이 충족되면 아무것도 쓰이지 않고 행복하게 true을 반환합니다. 아마도 당신이 예상했던 것과 다를 것입니다.

두 번째 조건이 충족되면 첫 번째 요소를 작성하고 조기 반환하십시오. 아마 당신의 루프 상태에 그것을 두는 것이 더 좋은 생각 일 것이고, 루핑이 끝나면 리턴 값을 리턴 할 것입니다.

int i = 0; 
boolean good = true; 
while(good && i < calendar.size()) { 
    // critical actions 
    String index = calendar.get(i); 
    if(index.equals(specifiedDay + "" + specifiedTime)) { 
     good = false; 
    } 
} 
// other code 
return good; 

해당 조건이 경우

는 아무것도 파일에 기록 없고, 만난 적이.

0

PrintWriter의 기본 동작은 버퍼를 자동으로 플러시하지 않습니다. 자세한 내용은 PrintWriter Documentation을 참조하십시오.

String index = calendar.get(i); 
if (index.equals(specifiedDay + "" + specifiedTime)) 

이 조건이 만족되지 않으면, 당신은 아무것도 출력하지 않습니다

또는, 데이터 문제가있을 수 있습니다. 이 조건이 사실임을 확인 했습니까?

관련 문제