Groovy 스크립트를 사용하여 한 위치에서 다른 위치로 파일을 복사하려고합니다. 나는 복사 한 파일이 복사 한 후 원본 파일보다 큰 크기의 주문이라는 것을 발견했습니다. 몇 번의 시행 착오 끝에 나는 복사하는 올바른 방법을 찾았지만 더 커야하는 이유에 대해서는 의아해했습니다. 이 코드를 실행하면 newFile2이 existingFile와 같은 크기가됩니다 동안it.bytes로 복사 한 후 훨씬 더 큰 파일
def existingFile = new File("/x/y/x.zip")
def newFile1 = new File("/x/y/y.zip")
def newFile2 = new File("/x/y/z.zip")
new File(newFile1) << new File(existingFile).bytes
new File(newFile2).bytes = new File(existingFile).bytes
는 newFile1는 existingFile보다 훨씬 커집니다. 두 zip 파일 모두 유효합니다.
왜 이런 일이 발생하는지 알고 있습니까? 첫 번째 복사본을 잘못 사용하고 있습니까? 아니면 내 설정에서 이상한가?
이 코드를 실행하기 전에 y.zip이 이미 존재합니까? '<< "접근법은 지정된 바이트를 파일 끝에 추가하는 반면,'x.bytes = y'는 파일을 덮어 쓸 것입니다. 그리고 ZIP 형식은 ZIP 파일의 앞에 가비지를 허용 할 수 있으므로 (자동 압축 풀기 스텁 등을 허용하기 위해) ZIP 데이터를 추가하는 모든 파일은 유효한 zip 파일이됩니다. –
감사합니다 이안! 이것이 문제인 것 같습니다. 내 코드에 여러 번 반복되는 파일에 반복적으로 파일을 복사하는 버그가 있습니다. << 연산자를 사용했기 때문에 파일에 반복해서 추가하고있었습니다. – rifboy
도움이 되니 기쁩니다. 내 의견을 답으로 다시 게시했습니다. –