【问题标题】:Get user name in RubyMotion OSX在 RubyMotion OSX 中获取用户名
【发布时间】:2014-07-09 16:03:19
【问题描述】:

我需要获取用户的主目录或者至少是他的名字。

使用FileUtils,我需要根据他们的帐户名移动文件,使用~/似乎不起作用。

如何获取用户的帐户名?

【问题讨论】:

    标签: ruby macos osx-mavericks rubymotion fileutils


    【解决方案1】:

    我还不是 ruby​​motion 用户,但是在大多数 ruby​​ 中你可以做到

    ENV["HOME"]
    

    用于主目录和

    ENV["USER"]
    

    让用户使用定义的环境变量完全实现这一目标。

    【讨论】:

    • 谢谢帕特鲁,我发现这篇文章stackoverflow.com/questions/3020187/… 表明这可能不是最好的方法。我会试试看(和建议):)
    • 当然,如果您无法控制其余流程对环境的影响,那么您是对的。您可以查看this post 以获得更多关于使用 ruby​​ 获取主目录的建议,尤其是对Etc.getpwuid.dir 的解释(以及为什么它在 Windows 上不起作用)。令人惊讶的是,试图遵循 POLS 的 ruby​​ 并没有为这个看似简单的任务提供独立于平台的方式。
    【解决方案2】:

    要获取文档的路径并在 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


    【讨论】:

    • 非常感谢,我会试一试的!我想要做的是将文件从源自用户主目录的路径复制到其他目录。我也不知道文件名,所以我使用通配符匹配(*),到目前为止还没有工作......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多