답변:
String fileContents = new File('/path/to/file').text
문자 인코딩을 지정해야하는 경우 대신 다음을 사용하십시오.
String fileContents = new File('/path/to/file').getText('UTF-8')
File
객체가 일반 Java jar에서 시작된 경우에도 작동한다고 언급하고 싶습니다 . Groovy File
에 text
속성 또는 무언가 가있는 자체 특수 클래스 가 있는지 확실 하지 않지만 File
Groovy 코드 또는 Java 코드로 인스턴스화되는지 여부에 관계없이 객체의 출처는 중요하지 않습니다 .
가장 짧은 방법은 실제로
String fileContents = new File('/path/to/file').text
그러나이 경우 파일의 바이트가 문자로 해석되는 방식을 제어 할 수 없습니다. AFAIK groovy는 파일 내용을보고 인코딩을 추측하려고합니다.
특정 문자 인코딩을 원하면 다음과 같이 문자 세트 이름을 지정할 수 있습니다.
String fileContents = new File('/path/to/file').getText('UTF-8')
자세한 내용은 API 문서를File.getText(String)
참조하십시오.
someFile.text
것은 지능적인 추측이 아니며 단순히 플랫폼 기본 인코딩을 사용합니다 (일반적으로 최신 Linux에서는 UTF-8이지만 Windows / Mac OS에서는 Windows-1252 또는 MacRoman과 같이 재정의하지 않는 한 -Dfile.encoding=...
)
약간의 변화 ...
new File('/path/to/file').eachLine { line ->
println line
}
제 경우 new File()
에는 작동하지 않아 FileNotFoundException
Jenkins 파이프 라인 작업에서 실행될 때 발생합니다 . 다음 코드는 이것을 해결했으며 내 의견으로는 훨씬 쉽습니다.
def fileContents = readFile "path/to/file"
나는 여전히이 차이를 완전히 이해하지 못하지만 같은 문제를 가진 다른 사람을 도울 수 있습니다. 아마도 new File()
그루비 코드를 실행하는 시스템에 파일을 생성 했기 때문에 예외가 발생 했을 수 있습니다. 그루비 코드는 내가 읽고 싶은 파일이 포함 된 시스템과 다른 시스템이었습니다.
String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp }
또한 파일을 찾을 수 없으면 오류가 있습니다.
여기서 동일한 방법으로 다른 방법을 찾을 수 있습니다.
파일을 읽습니다.
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();
전체 파일을 읽으십시오.
File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();
Line Bye Line 파일을 읽습니다.
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
for (def i=0;i<=30;i++) // specify how many line need to read eg.. 30
{
log.info file1.readLines().get(i)
}
새 파일을 작성하십시오.
new File("C:\Temp\FileName.txt").createNewFile();
def
유형을 지정할 때 필요하지 않습니다 .