나는 그저 끝내주는 것을 배우고있다.Groovy : stdout을 파일로 리다이렉트하지 않는다.
err = System.err
resultStr = "test to print"
err.println resultStr
println resultStr
그때 나는 출력에 두 번 resultStr
문자열을 얻을 리디렉션하지 않고 스크립트를 실행하는 경우 : 나는 매우 간단한 스크립트를 출력하는 println
와 STDERR 및 STDOUT에 일부 텍스트가 있습니다. 내가 test > test.txt
과 출력을 파일로 리디렉션하는 경우
는 결과 문자열 출력, TEST.TXT가 생성 (OK) (OK) 한 시간을 표시하지만, 빈을합니다. 나는 println
대신에 System.out.println
을 시도했지만 동일한 결과가 나타납니다. 내가 도대체 뭘 잘못하고있는 겁니까?
중요한 경우, 저는 Windows 7입니다. 다만, dir과 같은 표준 Windows 프로그램의 출력을 리디렉션하려고 시도한 경우 작동합니다.
그루비 버전 : 1.8.4 JVM : 1.7.0_02
UPDATE : 나는 또한 자바 간단한 "Hello World" 클래스 (동일한 JVM)을 만들려고했다. 리디렉션이 작동합니다. 그래서 그루비에서 뭔가 있어야합니다.
업데이트 2 : 그는 윈도우 7에서 동일한 스크립트에서 성공적으로 리디렉션 할 수 @ socha23에서 주석 후, 나는 문제가 스크립트에 있지만 그루비 설치, 버전 충돌이나 OS에 아니라고 생각했다. 그래서 나는 similar question on SuperUser (교차 게시에 대해 유감스럽게 생각했지만 실제로는 경계선 문제라고 생각했습니다).
그런 다음 스크립트를 직접 test.groovy > test.txt
으로 실행하면 리디렉션이 제대로 작동하지 않는다는 것을 알았습니다. 하지만 내가 groovy test.groovy > test.txt
을 실행하면 작동합니다. 나는 아직도이 행동을 이해하고 가능한 경우 수정하고 싶습니다. SU 문제를 방문하십시오. 오늘 12/24는 아직도 답이 없습니다.
프로그래밍 문제가 아니라고 생각됩니다. 여기에서 삭제해야하는 경우 추천하십시오. 두 가지 질문은 서로를 참고합니다.
종료하기 전에 스트림을 비우는 경우 파일이 비어 있습니까? –
@ RogerLindsjö : 스크립트 끝 부분에'System.out.flush()'를 넣었지만 파일은 여전히 비어 있습니다. – yuk
Groovy 1.8.3이 설치된 Mac OS X에서는 잘 작동합니다. 윈도우 7에서 뭔가있는 것 같아. (놀랍지 만). –