Bir dosyayı /a/b/c/d.txt olarak depolamak istiyorum, ancak bu dizinlerden herhangi birinin var olup olmadığını bilmiyorum ve gerekirse bunları yinelemeli olarak oluşturmam gerekiyor. Bunu yakutla nasıl yapabiliriz?
Yanıtlar:
Unixy makinelerde çalışıyorsanız, ruby altında her zaman bir kabuk komutunu geri işaretlere yerleştirerek çalıştırabileceğinizi unutmayın.
`mkdir -p /a/b/c`
Kurtarma yolunun adı !
Pathname('/a/b/c/d.txt').dirname.mkpath
FileUtils.mkdir_p '/a/b/c'+ oluşturmaya + izin vermesini mi söylüyorsunuz d.txt?
Pathname('/a/b/c/d.txt').dirname.mkpathve File.write('/a/b/c/d.txt', content)yokfilename = '/a/b/c/d.txt'.rpartition('/').last
Ayrıca kendi mantığınızı da kullanabilirsiniz
def self.create_dir_if_not_exists(path)
recursive = path.split('/')
directory = ''
recursive.each do |sub_directory|
directory += sub_directory + '/'
Dir.mkdir(directory) unless (File.directory? directory)
end
end
Dolayısıyla, yol 'tmp / a / b / c' ise, 'tmp' yoksa 'tmp' oluşturulur, ardından 'tmp / a /' vb.
FileUtilsvePathnamemuhtemelen Yakut kabuk komut dosyası için en önemli araçları.