2012-07-02 4 views
3

기본적으로 나는 목표가있는 C만을 사용하여 해결해야 할 문제가 있습니다. (내가 C로 시도)iOS에서 문자로 파일 문자 읽기

  • 문서 디렉토리에있는 파일에서 (EOF까지) 문자로 문자를 읽을 수있는 객관적인 C의 적절한 방법이 있나요. 그래서, 각 줄 앞에 특수 문자 (/라고 말함) 안에 파일의 모든 거꾸로 된 쉼표 앞에 이스케이프 문자를 추가합니다.

    교체

    (유형 == "프로젝트")

    /(doc.type == \ "프로젝트 \")

내 접근 방식이 올바르지 않다고 느낀다면 효율적인 방법으로이 작업을 수행 할 수있는 다른 방법이 있습니까?

답변

2

당신은 NSFileHandle를 사용하고 readDataAtLength를 호출 할 수 있습니다 : 1.

+1

감사합니다. 그러나 '\'이전 색인을 추적해야합니다. 또는 다른 접근법? – Krishanbhag

+1

파일을 메모리로 읽어들입니다 (너무 크지 않은 경우). NSString 인스턴스로 필요한 변경을 한 다음 파일을 다시 씁니다. – Stavash

3

의 값으로 파일의 모든 라인을 가져, 같은 문자를 교체하거나 더 많은 텍스트를 추가하는 등 변경 사항을 확인한 다음 파일을 저장합니다.

NSString *objPath = [[NSBundle mainBundle] pathForResource:@"textfile" ofType:@"txt"]; 
NSData *objData = [[NSData alloc] initWithContentsOfFile:objPath]; 

NSString *objString = [[NSString alloc] initWithData:objData encoding:NSUTF8StringEncoding]; 
NSMutableArray *lines = [NSMutableArray arrayWithArray:[objString componentsSeparatedByString:@"\n"]]; 

for (int i = 0; i < lines.count; i++) { 
    NSString *oneLine = [lines objectAtIndex:i]; 
    if (oneLine.length < 2) { 
     continue; 
    } 
    oneLine = [NSString stringWithFormat:@"/%@", oneLine]; 
    oneLine = [oneLine stringByReplacingOccurrencesOfString:@"`" withString:@"\`"]; 

    [lines replaceObjectAtIndex:i withObject:oneLine];   
} 
NSString *finalString = [lines componentsJoinedByString:@"\n"]; 
//save the file