Чтение и запись целого числа в / из файла .txt - PullRequest
0 голосов
/ 06 мая 2011

Как я могу читать и записывать целые числа в текстовый файл и из него, и можно ли читать или писать в несколько строк, т. Е. Иметь дело с несколькими целыми числами?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

Это, безусловно, возможно;это просто зависит от точного формата текстового файла.
Чтение содержимого текстового файла легко:

// 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 .

0 голосов
/ 12 апреля 2013

Если вам нужно писать в несколько строк, используйте \r\n при построении строки newContents, чтобы указать, где должны быть разрывы строк.

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"];
}
...