How do open a file for writing only if it doesn't already exist in ruby

后端 未结 1 1186
我寻月下人不归
我寻月下人不归 2021-02-12 12:14

I want to open a file for writing but only if it doesn\'t already exist. If the file exists I want to raise an exception. Is this the best way to do it?

filenam         


        
1条回答
  •  我在风中等你
    2021-02-12 13:13

    After doing some further research, it seems you can use the File::CREAT and File::EXCL mode flags.

    filename = 'foo'
    File.open(filename, File::WRONLY|File::CREAT|File::EXCL) do |file|
      file.write contents
    end
    

    In this case, open will raise an exception if the file exists. After running once, this program succeeds without error, creating a file named foo. On the second run, the program emits this:

    foo.rb:2:in `initialize': File exists - foo (Errno::EEXIST)
        from foo.rb:2:in `open'
        from foo.rb:2
    

    From man open:

           O_WRONLY        open for writing only
           O_CREAT         create file if it does not exist
           O_EXCL          error if O_CREAT and the file exists
    

    0 讨论(0)
提交回复
热议问题