2012-04-18 2 views
0

저는 Windows 7이고 Formatter 객체는 약 2500 개의 값만 파일에 쓰려고합니다. 그 후 파일은 숫자 중간에서 갑작스럽게 끊어지고 그 다음에 그냥 비어있게됩니다. while 루프는 4200 번 실행되고 iter.next()는 반복적으로 올바른 값을 반환합니다. 그럼에도 불구하고, 파일 부분에 대한 실제 쓰기는 약 2500 번째 쓰기 후에 종료됩니다. 어떤 아이디어? 감사! - 라이언포맷터 형식 메서드 출력 제한?

try{... 

output = new Formatter("C:\\users\\ryans\\desktop\\IntelMA.tsv"); 
... 
} 

... 

Iterator<Double> iter = MA.getMovingAverage().iterator(); 

while (iter.hasNext()){ 
    output.format("%f\t", iter.next()); 
} 

답변

1

내 생각 엔 당신이 폐쇄되지 않거나 Formatter을 플러시, 그래서 버퍼 된 출력이 손실됩니다 적이 있다는 것입니다.

finally 블록으로 닫아야합니다.

+0

답장을 보내 주셔서 감사합니다. while은 try 블록에 실제로 없으므로 finally를 사용할 수 없지만 output.close()를 추가했습니다. while 루프 이후에. 그것은 여전히 ​​똑같은 일을합니다. 약 2500 년 후에 끝납니다. – RyanS

+0

@ 라이언 : try 블록에 넣을 수 있습니다. (그냥 시도/마지막). 여전히 작동하지 않는다면, 문제를 보여주는 짧지만 완전한 * 프로그램을 게시하십시오. 어디에서 데이터를 가져 오지 않아도됩니다 (예외가 발생하지 않는다고 가정). 그래서 색인을 반복하거나 인쇄하거나 임의의 숫자를 인쇄하기 시작합니다. 단순히 그것을 재현 할 수있는 것. –

+0

오늘 아침에 다시 시도해 보았습니다. 귀하의 제안은 이번에 효과가있었습니다 (어제 작동하지 않는 이유는 아마도 사용자 오류 일 것입니다). 고맙습니다. 나는 결코 그것을 생각하지 않았을 것이다. 필자는 Formatter 객체를 사용하는 모든 코드를 try 블록에 넣을 것이다. 내가 배우는 데 도움이되는 이와 같은 리소스를 갖는 것이 좋습니다. – RyanS