【发布时间】:2014-07-09 16:03:19
【问题描述】:
我需要获取用户的主目录或者至少是他的名字。
使用FileUtils,我需要根据他们的帐户名移动文件,使用~/似乎不起作用。
如何获取用户的帐户名?
【问题讨论】:
标签: ruby macos osx-mavericks rubymotion fileutils
我需要获取用户的主目录或者至少是他的名字。
使用FileUtils,我需要根据他们的帐户名移动文件,使用~/似乎不起作用。
如何获取用户的帐户名?
【问题讨论】:
标签: ruby macos osx-mavericks rubymotion fileutils
我还不是 rubymotion 用户,但是在大多数 ruby 中你可以做到
ENV["HOME"]
用于主目录和
ENV["USER"]
让用户使用定义的环境变量完全实现这一目标。
【讨论】:
Etc.getpwuid.dir 的解释(以及为什么它在 Windows 上不起作用)。令人惊讶的是,试图遵循 POLS 的 ruby 并没有为这个看似简单的任务提供独立于平台的方式。
要获取文档的路径并在 OSX 中创建一个新文件夹,您可以这样做。
directory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true).first
directory = directory.stringByAppendingPathComponent("Sub Folder")
fileManager = NSFileManager.defaultManager
fileExists = fileManager.fileExistsAtPath(directory)
if (fileExists)
NSLog("Folder already exists")
else
if(!fileManager.createDirectoryAtPath(directory, withIntermediateDirectories:true, attributes: nil, error: nil))
NSLog("Failed to create folder")
else
NSLog("Successfully created folder")
end
end
如果您想要的只是用户帐户的名称,您可以使用NSHost
对于主目录,您可以改用 NSHomeDirectory。
fm = NSFileManager.defaultManager
directory = NSSearchPathForDirectoriesInDomains(NSHomeDirectory, NSUserDomainMask, true).first
fm.contentsOfDirectoryAtPath(directory, error: nil).each do |file|
puts file # outputs each file under the home directory
// Copy file here using NSFileManager
end
然后你可以使用 NSFileManager 的copyItemAtPath
【讨论】: