我想在临时目录中创建临时文件。下面是我的代码。
require 'tmpdir'
require 'tempfile'
Dir.mktmpdir do |dir|
Dir.chdir(dir)
TemFile.new("f")
sleep 20
end
它给我这个例外:Errno :: EACCES:权限被拒绝 - C:/ Users / SANJAY~1 / AppData / Local / Temp / d20130724-5600-ka2ame,因为ruby正在尝试删除临时目录,这是not empty.plz帮我在临时目录中创建临时文件。
答案 0 :(得分:0)
嗨,我创建了带有前缀“ 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
答案 1 :(得分:-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。