0
我從硬件設備讀取設置,並需要將它們逐個寫入文本文件,一行一行。如果文件已經存在,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];
}
}