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.