5

一時ディレクトリ内に一時ファイルを作成したい。以下は、このための私のコードです。

           require 'tmpdir'
           require 'tempfile'
           Dir.mktmpdir do |dir|
             Dir.chdir(dir)
             TemFile.new("f")
             sleep 20
           end

Errno::EACCES: Permission denied - C:/Users/SANJAY~1/AppData/Local/Temp/d20130724-5600-ka2ameruby が空ではない一時ディレクトリを削除しようとしているため、この例外が発生 します。

一時ディレクトリ内に一時ファイルを作成するのを手伝ってください。

4

2 に答える 2

1

こんにちは、接頭辞「foo」の一時ディレクトリと、接頭辞catsの一時ファイルを作成しました

dir = Dir.mktmpdir('foo')
begin      
  puts('Directory path:'+ dir) #Here im printing the path of the temporary directory

  # Creating the tempfile and giving as parameters the prefix 'cats' and 
  # the second parameter is the tempdirectory
  tempfile = Tempfile.new('cats', [tmpdir = dir]) 

  puts('File path:'+ tempfile.path)  #Here im printing the path of the tempfile
  tempfile.write("hello world")
  tempfile.rewind
  tempfile.read      # => "hello world"
  tempfile.close
  tempfile.unlink   
ensure
  # remove the directory.
  FileUtils.remove_entry dir
end

そして、コンソールにパスを出力するので、次を取得できます

Directory path: /tmp/foo20181116-9699-1o7jc6x
File path:  /tmp/foo20181116-9699-1o7jc6x/cats20181116-9699-7ofv1c
于 2018-11-16T18:57:43.657 に答える
-1

Tempfileクラスを使用する必要があります。

require 'tempfile'

file = Tempfile.new('foo')
file.path      # => A unique filename in the OS's temp directory,
               #    e.g.: "/tmp/foo.24722.0"
               #    This filename contains 'foo' in its basename.
file.write("hello world")
file.rewind
file.read      # => "hello world"
file.close
file.unlink    # deletes the temp file

一時フォルダーを作成するには、Dir.mktmpdirを使用できます。

于 2013-07-24T12:04:12.057 に答える