2017-02-17 3 views
1

OSX Automation with Javascript를 사용하여 텍스트 파일을 배열로 읽는 방법에 대한 문서를 찾는 데 정말 고심하고 있습니다.OS X로 배열로 텍스트 파일 읽기 Javascript

는 여기에 지금까지이 작업은 다음과 같습니다

var app = Application.currentApplication(); 
app.includeStandardAdditions = true; 

var myFile = "/Users/Me/Dropbox/textfile.txt"; 
var openedFile = app.openForAccess(myfile, { writePermission: true }); 

var myText = openedFile.?? 

app.closeAccess(URLFile); 

내가 공식 애플 문서에서이 대부분을 복사. 나는 온라인 어디서나 문서를 찾는 것이 정말 어렵다는 것을 알고 있습니다. 예를 들어, openForAccess에 대한 인수는 무엇입니까? 그 방법을 설명하는 어떤 사전에는 아무것도없는 것처럼 보입니다.

JXA로 시간을 낭비하고 있습니까?

+0

는, 애플 스크립트가 아니라 지원되는 옵션으로 설명서 및 커뮤니티 지원이 제공됩니다. 다른 작업의 경우, Python, Ruby, Swift 또는 활발히 유지 관리되고 건강한 사용자 커뮤니티가있는 다른 언어를 사용할 수 있다면 그렇게하십시오. JXA는 출하 첫 날부터 효과적으로 수정되지 않았고 지원을받지 못해서 작년에 자동화 제품 관리자의 해킹과 Mac 자동화 팀의 해체로 절정에 이르지 못했지만 어떤 시장 점유율도 지키지 못했습니다. 따라서 좋은 장기 투자 . – foo

+0

JXA는 매우 유용한 도구입니다. – houthakker

답변

0

Apple은 자신의 Mac Automation Scripting Guide에서 파일을 읽고 쓰는 데에만 사용되는 an entire page입니다. 여기에는 찾고자하는 작업을 정확하게 수행하는 기능이 포함됩니다. 나는 애플의 가이드에서 readAndSplitFile 기능을 사용하여 아래에 예를 다시 작성했습니다 :

var app = Application.currentApplication() 
app.includeStandardAdditions = true 

function readAndSplitFile(file, delimiter) { 
    // Convert the file to a string 
    var fileString = file.toString() 

    // Read the file using a specific delimiter and return the results 
    return app.read(Path(fileString), { usingDelimiter: delimiter }) 
} 

var fileContentsArray = readAndSplitFile('/Users/Me/Dropbox/textfile.txt', '\n') 

위의 코드를 실행 한 후, fileContentsArray 파일의 한 줄을 containg 각각의 문자열, 문자열 배열을 개최한다. (당신은 또한 모든 탭에서 깰 구분, 또는 사용자가 선택한 다른 문자로 \t 사용할 수 있습니다.)

1

일부 일반적인 기능과 예시 테스트 :

응용 프로그램 자동화를위한
(function() { 
    'use strict'; 

    // GENERIC FUNCTIONS ------------------------------------------------------ 

    // doesFileExist :: String -> Bool 
    function doesFileExist(strPath) { 
     var error = $(); 
     return $.NSFileManager.defaultManager 
      .attributesOfItemAtPathError($(strPath) 
       .stringByStandardizingPath, error), error.code === undefined; 
    }; 

    // lines :: String -> [String] 
    function lines(s) { 
     return s.split(/[\r\n]/); 
    }; 

    // readFile :: FilePath -> maybe String 
    function readFile(strPath) { 
     var error = $(), 
      str = ObjC.unwrap(
       $.NSString.stringWithContentsOfFileEncodingError($(strPath) 
        .stringByStandardizingPath, $.NSUTF8StringEncoding, error) 
      ), 
      blnValid = typeof error.code !== 'string'; 
     return { 
      nothing: !blnValid, 
      just: blnValid ? str : undefined, 
      error: blnValid ? '' : error.code 
     }; 
    }; 

    // show :: a -> String 
    function show(x) { 
     return JSON.stringify(x, null, 2); 
    }; 

    // TEST ------------------------------------------------------------------- 
    var strPath = '~/DeskTop/tree.txt'; 

    return doesFileExist(strPath) ? function() { 
     var dctMaybe = readFile(strPath); 
     return dctMaybe.nothing ? dctMaybe.error : show(lines(dctMaybe.just)); 
    }() : 'File not found:\n\t' + strPath; 
})();