Đào trong tempfile.rb
bạn sẽ nhận thấy rằng Tempfile
bao gồm Dir::Tmpname
. Bên trong, bạn sẽ tìm thấy make_tmpname
làm những gì bạn yêu cầu.
Dir::Tmpname.make_tmpname "/tmp/źdźbło", nil
# => "/tmp/źdźbło20121209-1867-1qyptqe"
Dir::Tmpname.make_tmpname(['a', '.png'], nil)
# => "a20121209-2710-wcjbzr.png"
Trong cùng một tập tin, cũng có Dir::Tmpname.create
đó, tùy thuộc vào những gì bạn muốn đạt được, không một chút hơn make_tmpname
. Đặc biệt, nó tìm ra những thư mục tạm thời để sử dụng (giả sử bạn không ở trên * nix nơi /tmp
là một giả định chính xác toàn cầu). Tuy nhiên, một chút xấu xí để sử dụng cho rằng nó hy vọng một khối:
Dir::Tmpname.create(['a', '.png']) { }
# => "/tmp/a20140224-15930-l9sc6n.png"
Khối là có cho mã để kiểm tra nếu tập tin tồn tại và nâng cao một Errno::EEXIST
để một cái tên mới có thể được tạo ra với incrementing giá trị gắn thẻ trên kết thúc.
Cảm ơn, đúng vậy. Có thể được sử dụng với đối số mảng để bảo toàn phần mở rộng tên tệp: 'Dir :: Tmpname.make_tmpname (['a', '.png'], nil)' – iltempo
@iltempo, bạn được chào đón. Tôi đã thêm ví dụ của bạn vào câu trả lời. – Jan
Điều này là tuyệt vời nhưng không ai đã đề cập rằng bạn cần 'yêu cầu 'tmpdir'' để làm việc này. – KingBob