2013-07-25 4 views
0

나는 다음과 같은 파일을 생성/코드를 작성했습니다 : 몇 가지 이상한 이유로스칼라의 PrintWriter가 파일에 쓰지 않습니까?

val file = new PrintWriter(new FileWriter(new File(TMP_DIR, fileName), true)) 
    file.write(getFirstRow(tableName)) 

가 내 파일을 작성하지 않을하지만 매번 파일을 작성합니다. getFirstRow 메서드는 파일에 추가 할 문자열을 반환합니다. 무슨 일 이니?

+0

:

def withPrintWriter(dir:String, name:String)(f: (PrintWriter) => Any) { val file = new File(dir, name) val writer = new FileWriter(file) val printWriter = new PrintWriter(writer) try { f(printWriter) } finally { printWriter.close() } 

}

이 같이 사용

그것이 Loan Pattern의 예를 사용할 수있는 환상적인 기회가 있다는 등의 일반적인 실수 쓰기 후에 "flush"할까요? – vptheron

답변

6

File (또는 그럴 수도있는 PrintWriter) 사용자는 flush이거나 close이 아닙니다. 호출에 대해 어떻게

withPrintWriter("/tmp", "myFile") { printWriter => 
    printWriter.write("all good") 
} 
+0

암시 적으로 더 많이 정리할 수 없습니까? – Blankman

관련 문제