2014-05-21 10 views
0

나는 사용자의 홈 디렉토리 또는 적어도 그의 이름을 알아야합니다.RubyMotion OSX에서 사용자 이름 얻기

FileUtils을 사용하면 계정 이름을 기반으로 파일을 이동해야하며 ~/을 사용하면 작동하지 않는 것 같습니다.

어떻게 사용자의 계정 이름을 얻을 수 있습니까?

답변

0

나는 아직 rubymotion 사용자가 아닌,하지만 대부분의 루비에 당신은 정의 된 환경 변수를 사용하여 정확하게 달성하기 위해 사용자

ENV["HOME"] 
홈 디렉토리에 대한

ENV["USER"] 

을 할 수 있습니다.

+0

감사 Patru을 사용할 수 있습니다, 내가이 글을 발견 한 이후 http://stackoverflow.com/questions/3020187/getting-home-directory-in-mac- os-x-using-c-language는 이것이 최선의 방법이 아닐 수도 있음을 시사합니다. 나는 그것을 (그리고 제안들) try and see를 줄 것이다. –

+0

물론 프로세스의 나머지 부분이 환경에서하는 일을 제어 할 수 없다면 당신이 옳을 것이다. 홈 디렉토리를 가져 오는 것에 대한 더 많은 제안은 [this post] (http://stackoverflow.com/questions/4190930/cross-platform-means-of-getting-users-home-directory-in-ruby)에서 확인할 수 있습니다. 루비를 사용하여, 특히 Etc.getpwuid.dir에 대한 설명 (그리고 왜 Windows에서는 작동하지 않습니다). POLS를 따르려고하는 루비가 이처럼 단순한 작업에 플랫폼 독립적 인 방식을 제공하지 않는다는 것은 놀랍습니다. – Patru

0

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 

당신은 당신이 대신 NSHomeDirectory을 사용할 수있는 홈 디렉토리를 들어 NSHost


를 사용할 수 있습니다.

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


+0

대단한 감사, 나는 그것을 줄거야! 내가하려는 일은 사용자 홈 디렉토리에서 비롯된 경로에서 다른 디렉토리로 파일을 복사하는 것입니다. 나는 또한 파일 이름을 모르기 때문에 와일드 카드 매치 (*)를 사용하고있다. –