저는 Mac에서 Xcode로 프로그래밍 중입니다. 번들로 파일을 읽고 쓸 수있는 명령 줄 응용 프로그램이 있고이 파일에 액세스하는 방법이 궁금합니다. 씨 남자C에서 명령 줄 응용 프로그램 번들에 액세스하는 방법
편집
감사 : 난 그냥 사용자의 라이브러리 폴더에 폴더를 만든 경우가 더 잘 작동겠습니까?
저는 Mac에서 Xcode로 프로그래밍 중입니다. 번들로 파일을 읽고 쓸 수있는 명령 줄 응용 프로그램이 있고이 파일에 액세스하는 방법이 궁금합니다. 씨 남자C에서 명령 줄 응용 프로그램 번들에 액세스하는 방법
편집
감사 : 난 그냥 사용자의 라이브러리 폴더에 폴더를 만든 경우가 더 잘 작동겠습니까?
실제로 번들이 있다고 가정하면 CoreFoundation CFBundle API을 사용할 수 있습니다. CFBundleGetMainBundle()
을 사용하여 앱의 번들을 찾고 CFBundleCopy*URL()
함수를 사용하여 번들의 URL과 다양한 구성 요소를 가져올 수 있습니다.
그러나 응용 프로그램은 해당 번들에 쓸 수 없습니다. 쓰기 권한이없는 현재 사용자 또는 서명 된 번들이 손상되는 등 여러 가지가 잘못 될 수 있습니다. 일반적으로 응용 프로그램은 ~/Library/Application Support 폴더에 사용자가 편집 할 수있는 파일이 아닌 파일을 만들어야합니다 *. 사용자 문서의 일반적인 위치는 문서 폴더입니다.
(* "사용자 편집 가능"을 명확히하기 위해 사용자가 일반적으로 앱 인터페이스를 통해 단독으로 액세스하는 데이터의 개인 저장소가 아닌 내비게이션으로 열리는 파일을 의미합니다. 예를 들어 텍스트 편집기 문서 Stickies 노트가 응용 프로그램 지원으로 이동하는 동안 문서로 이동하십시오.)
좋아요, 그래서 사용자가 편집 할 수있는 파일은 어떻게해야합니까? –
그러나 앱이'~/Documents'에 파일을 자동으로 덤프하지 않도록하십시오. 사용자의'Documents' 폴더를 어수선하게 만드는 것은 무례합니다. – mipadi
@mipadi : 사용자 문서 폴더에 폴더를 만들고 거기에서 작업해도 괜찮습니까? –
난 당신이, 질문하지만 당신은 당신의 자원 중 하나의 경로를 원하는 경우 사용할 수있는 이해한다면 확실하지 : 당신은 그냥 응용 프로그램 디렉토리를 원하는 경우
NSString *path = (NSString*)[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"png"];
당신이 사용할 수 있습니다
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [[paths objectAtIndex:0] retain];
또는
NSArray *resPaths = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES);
NSString *resourceDirectory = [[resPaths objectAtIndex:0] retain];
내가 지금 내 맥에 있지, 그래서 난 그냥 붙여 넣기 해요 우리의 프레임 워크에서.
참고 : 실제로 명령 줄 도구는 일반 앱 번들로 빌드합니다. – Andreas
어떻게 실행합니까? –
OK, Objective-C에서 사용했지만 내 프로그램은 C 언어로되어 있으며 두 번째와 세 번째 프로그램은 일반 C 배열로 작동합니까? –
명령 줄 도구는 일반적으로 번들이 아닙니다. 응용 프로그램 구조에 대해 더 알려 줄 수 있습니까? –
많은 경우에 권한 문제가 발생하기 때문에 번들의 파일에 * 쓰는 것을 원하지 않을 수도 있습니다. 독서는 괜찮을 것입니다. –