2011-05-06 6 views

답변

2

이것은 확실히 가능합니다. 단순히 텍스트 파일의 정확한 형식에 따라 달라집니다. 텍스트 파일의 내용을 읽기
쉽습니다 : 전체 파일을 포함하는 오토 릴리즈 캐릭터를 생성

// If you want to handle an error, don't pass NULL to the following code, but rather an NSError pointer. 
NSString *contents = [NSString stringWithContentsOfFile:@"/path/to/file" encoding:NSUTF8StringEncoding error:NULL]; 

. 파일에 포함 된 모든 정수의 경우, 당신은이를 쓸 수 있습니다 : 파일 (하나 개의 정수를 포함하는 각 라인) 여러 행으로 분할되어

NSInteger integer = [contents integerValue]; 

경우, 당신이 그것을 분할해야합니다 :

NSArray *lines = [contents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 
for (NSString *line in lines) { 
    NSInteger currentInteger = [line integerValue]; 
    // Do something with the integer. 
} 

전반적으로 매우 간단합니다.


파일로 다시 쓰는 것도 아주 쉽습니다. 일단 문자열로 되돌아 가길 원한다면 다음을 사용할 수 있습니다 :

NSString *newContents = ...; // New string. 
[newContents writeToFile:@"/path/to/file" atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

문자열을 쓸 수 있습니다. 물론, 당신은 설정으로 재생할 수 있습니다. atomically에서 YES으로 설정하면 테스트 파일에 먼저 쓰고 확인한 다음 이전 파일을 복사하여 이전 파일을 바꿉니다. 이렇게하면 오류가 발생해도 파일이 손상되지 않습니다. 원한다면 다른 인코딩을 사용할 수 있지만 (실제로는 NSUTF8StringEncoding 권장) 오류를 잡으려면 (본질적으로해야 할) NSError에 대한 참조를 메서드에 전달하면됩니다. 그것은 다음과 같이 보일 것입니다 :

NSError *error = nil; 
[newContents writeToFile:@"someFile.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error]; 
if (error) { 
    // Some error has occurred. Handle it. 
} 

를 추가 읽기를 들어, NSString Class Reference를 참조하십시오.

+0

어떻게하면 여러 줄을 쓸 수 있습니까? Apple 문서에 따르면'writeToFile'은 호출 될 때마다 이전 파일을 삭제할 것이므로 여러 개의'writeToFile' 호출을 반복하는 것만으로는 작동하지 않습니다. 'newLineCharacterSet'으로 작성하는 방법이 있습니까? – GeneralMike

+0

알 겠어 - 쓰기 위해'newLineCharacterSet'을 전혀 사용하지 않지만'\ r \ n'을 사용하여 줄 바꿈을 지정할 수 있습니다. 자세한 내용은 내 대답을 확인하십시오. – GeneralMike

0

여러 줄로 작성해야하는 경우 newContents 문자열을 작성할 때 \r\n을 사용하여 줄 바꿈을 배치 할 위치를 지정하십시오.

NSMutableString *newContents = [[NSMutableString alloc] init]; 

for (/* loop conditions here */) 
{ 
    NSString *lineString = //...do stuff to put important info for this line... 
    [newContents appendString:lineString]; 
    [newContents appendString:@"\r\n"]; 
}