Ruby에서 빈 파일 만들기 : "touch"에 해당합니까?


답변:


181

FileUtils.touch그것이하는 일처럼 보이고 *touch 명령을 반영 합니다 :

require 'fileutils'
FileUtils.touch('file.txt')

* touch (1) 과 달리 mtime 또는 atime 만 업데이트 할 수 없습니다. 또한 몇 가지 다른 좋은 옵션이 없습니다.


@ 5chdn 당신은 괄호없이 의미합니까? 예, 메서드 매개 변수 주변의 괄호는 (때로는) 선택 사항입니다.
Dave Newton

44

파일 핸들이 걱정되는 경우 :

File.open("foo.txt", "w") {}

로부터 문서 :

선택적 코드 블록이 제공되면 열린 파일이 인수로 전달되고 File 객체는 블록이 종료 될 때 자동으로 닫힙니다.


감사합니다. 새 파일을 다른 프로세스로 보내고 있으므로 핸들을 즉시 닫아야합니다.
Abhi Beckert

12
이것은 실제로 미러링되지 않는다는 점을 지적 할 가치 touch가 있습니다. 파일이 있으면 덮어 씁니다.
MrTheWalrus

3
추가 모드를 사용하면 파일이 이미있는 경우 잘리지 않습니다. File.open ( "foo.txt", "a") {} 이것은 또한 'touch'를 미러링하지 않지만 'touch (1)'은 그렇지 않습니다. 질문.
G. Allen Morris III

"a"를 사용하면 mtime이 업데이트되지 않습니다. (구글이 우리 루비 터치를 원하는 사람들을 제공 있도록 자막, "터치"이었다.)
마틴 Dorey

* nix 시스템에서 이러한 방식으로 생성 된 파일 소유자는 누구입니까?
Islam Azab 2014 년



-1

예 :

File.open "foo.txt", "w"

1
다른 언어 에서처럼 열린 파일 핸들이 뒤에 남습니까?
Abhi Beckert 2011

4
@Abhi : 그렇습니다. 그러나 가비지 수집은 어느 시점에서 그것을 처리 할 것입니다. 그러나이를 방지하려면 빈 블록을 전달하십시오 (Michael Kohl의 답변 참조)
Marc-André Lafortune

"언젠가"는 언제 일어날까요? 스크립트 끝에서 또는 변수에 할당되지 않았기 때문에 즉시? 시스템의 다른 프로세스가 즉시 작업을 시작할 수 있도록 파일을 만들고 있으며 파일 핸들이 여전히 쓰기 위해 열려 있으면 차단됩니다.
Abhi Beckert

1
File.open ( "foo.txt", "w"). close ()는 파일 핸들 문제를 해결하지만 FileUtils.touch가 더 나은 솔루션입니다.
Michael Campbell

그 :-)처럼 열려있는 파일 핸들을 두지 마십시오
sekmo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.