Я читаю настройки с аппаратного устройства и должен записывать их в текстовый файл, один за другим, один на строку. Если файл уже существует, SavePanel спрашивает, хочу ли я его перезаписать. Я отвечаю «да», но файл добавляется.Как перезаписать существующий текстовый файл, а затем добавить к нему
- (IBAction)saveSettings:(id)sender
{
self.saveSettings = TRUE;
self.firstWrite = TRUE;
NSSavePanel *saveText = [NSSavePanel savePanel];
[saveText setNameFieldStringValue:@"SavedSettings.txt"];
[saveText setDirectoryURL:[NSURL fileURLWithPath:@"Documents"]];
[saveText setShowsTagField:NO];
NSInteger saveInt = [saveText runModal];
if(saveInt == NSModalResponseOK)
{
NSURL *pathURL = [saveText URL];
self.pathName = [pathURL path];
[self appendToFile:@"General configuration\n"];
[self appendToFile:@"1\n"];
[self appendToFile:@"1\n"];
[self appendToFile:@"Configuration axis 1\n"];
[self readMoveDelayAxis1];
}
}
- (BOOL)appendToFile:(NSString *)strcontent;
{
BOOL result = YES;
NSFileHandle* fh = [NSFileHandle fileHandleForWritingAtPath:self.pathName];
if (!fh)
{
[[NSFileManager defaultManager] createFileAtPath:self.pathName contents:nil attributes:nil];
fh = [NSFileHandle fileHandleForWritingAtPath:self.pathName];
}
if (!fh) return NO;
@try {
[fh seekToEndOfFile];
self.firstWrite = FALSE;
[fh writeData:[strcontent dataUsingEncoding:NSUTF8StringEncoding]];
}
@catch (NSException * e) {
result = NO;
}
[fh closeFile];
return result;
}
Измененный код в ответ ниже
- (IBAction)saveSettings:(id)sender
{
self.saveSettings = TRUE;
NSSavePanel *saveText = [NSSavePanel savePanel];
[saveText setNameFieldStringValue:@"SavedSettings.txt"];
[saveText setDirectoryURL:[NSURL fileURLWithPath:@"Documents"]];
[saveText setShowsTagField:NO];
NSInteger saveInt = [saveText runModal];
if(saveInt == NSModalResponseOK)
{
NSURL *pathURL = [saveText URL];
NSFileManager *filemgr;
filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath:[pathURL path]] == YES)
{
[filemgr removeItemAtPath:[pathURL path] error: NULL];
}
self.pathName = [pathURL path];
[self appendToFile:@"General configuration\n"];
[self appendToFile:@"1\n"];
[self appendToFile:@"1\n"];
[self appendToFile:@"Configuration axis 1\n"];
[self readMoveDelayAxis1];
}
}