development

Groovy의 파일을 문자열로 읽는 방법은 무엇입니까?

big-blog 2020. 3. 18. 08:06
반응형

Groovy의 파일을 문자열로 읽는 방법은 무엇입니까?


파일 시스템에서 파일을 읽고 전체 내용을 그루비 컨트롤러의 문자열로로드해야합니다. 가장 쉬운 방법은 무엇입니까?


String fileContents = new File('/path/to/file').text

문자 인코딩을 지정해야하는 경우 대신 다음을 사용하십시오.

String fileContents = new File('/path/to/file').getText('UTF-8')

가장 짧은 방법은 실제로

String fileContents = new File('/path/to/file').text

그러나이 경우 파일의 바이트가 문자로 해석되는 방식을 제어 할 수 없습니다. AFAIK groovy는 파일 내용을보고 인코딩을 추측하려고합니다.

특정 문자 인코딩을 원하면 다음과 같이 문자 세트 이름을 지정할 수 있습니다.

String fileContents = new File('/path/to/file').getText('UTF-8')

자세한 내용은 API 문서를File.getText(String) 참조하십시오.


약간의 변화 ...

new File('/path/to/file').eachLine { line ->
  println line
}

가장 쉬운 방법은

new File(filename).getText()

그것은 당신이 할 수있는 것을 의미합니다 :

new File(filename).text


제 경우 new File()에는 작동하지 않아 FileNotFoundExceptionJenkins 파이프 라인 작업에서 실행될 때 발생합니다 . 다음 코드는 이것을 해결했으며 내 의견으로는 훨씬 쉽습니다.

def fileContents = readFile "path/to/file"

나는 여전히이 차이를 완전히 이해하지 못하지만 같은 문제를 가진 다른 사람을 도울 수 있습니다. 아마도 new File()그루비 코드를 실행하는 시스템에 파일을 생성 했기 때문에 예외가 발생 했을 수 있습니다. 그루비 코드는 내가 읽고 싶은 파일이 포함 된 시스템과 다른 시스템이었습니다.


여기서 동일한 방법으로 다른 방법을 찾을 수 있습니다.

파일을 읽습니다.

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();

참고 URL : https://stackoverflow.com/questions/7729302/how-to-read-a-file-in-groovy-into-a-string

반응형