- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个日志文件,我正在尝试将数据 append 到其末尾。我有一个 NSMutableString
textToWrite
变量,我正在执行以下操作:
[textToWrite writeToFile:filepath atomically:YES
encoding: NSUnicodeStringEncoding error:&err];
但是,当我执行此操作时,文件中的所有文本都将替换为 textToWrite 中的文本。我怎样才能 append 到文件的末尾? (或者更好的是,如何在新行中追加到文件末尾?)
最佳答案
我猜你可以做几件事:
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:aPath];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[textToWrite dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];
请注意,这会将 NSData append 到您的文件中——而不是 NSString。请注意,如果您使用 NSFileHandle,则必须确保该文件事先存在。如果路径中不存在文件,fileHandleForWritingAtPath
将返回 nil。查看NSFileHandle class reference .
或者你可以这样做:
NSString *contents = [NSString stringWithContentsOfFile:filepath];
contents = [contents stringByAppendingString:textToWrite];
[contents writeToFile:filepath atomically:YES encoding: NSUnicodeStringEncoding error:&err];
我相信第一种方法是最有效的,因为第二种方法涉及在将新内容写入文件之前将文件内容读入 NSString。但是,如果您不希望您的文件包含 NSData 并且希望将其保留为文本,则第二个选项将更适合您。
[更新]因为 stringWithContentsOfFile 是 deprecated您可以修改第二种方法:
NSError* error = nil;
NSString* contents = [NSString stringWithContentsOfFile:filepath
encoding:NSUTF8StringEncoding
error:&error];
if(error) { // If error object was instantiated, handle it.
NSLog(@"ERROR while loading from file: %@", error);
// …
}
[contents writeToFile:filepath atomically:YES
encoding:NSUnicodeStringEncoding
error:&err];
关于objective-c - 使用 NSMutableString 追加到文件末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11106584/
NSMutableString *str, *str1; //这里分配 我正在使用[str appendString:str1] 不工作。[str appendFormat:str1] 不工作。 那么
@property (nonatomic, weak) id a; @property (nonatomic, weak) id sa; 我有两个弱点。数组将在复制后释放。但是 NSString 没有
我有一个相当大的循环,它获取一个字符串,对其执行一些操作,然后再进入下一个循环。我最初是释放它然后重新分配它,但认为这有点浪费资源,但不知道如何清除它以重用它。 最佳答案 一种方法是[myString
我有为 MD5 munge 准备消息的 java 代码 private static char[] jimsCopyRight = { 'C'、'o'、'p'、'y'、'r'、'i'、'g'、'h'、
我有这个代码: NSMutableString *printHead = [NSMutableString stringWithFormat:@"%@, %@", firstTextField.tex
我在M文件开头声明了一个对象如下: NSMutableString *SomeString; 在一个方法中我尝试初始化它: SomeString = [NSMutableString stringW
我想创建一个字符串。根据条件,我必须附加一些额外的字符串。在这种情况下,首选使用哪个?是根据条件创建两个不同的字符串还是创建可变字符串以根据条件附加新字符串? 前 if(a==1) { Str
一直在玩弄仪器,但运气不太好,无法弄清楚如何解决此内存泄漏问题。 首先是代码: -(NSString *) randomizeHint:(NSString *) wordToShuffle{
我有以下将字符串数组转换为字符串的代码 -(NSString *) arrayToString:(NSMutableArray *) array { NSMutableString *strF
我制作了一个包含几个单词的数组,然后我将所有单词放入一个可变字符串中,然后将这个字符串的每个字符放入一个可变数组中。然而,“wordSplitted”是一个可变的字符数组,在模拟器中每次启动应用程序时
我在使用谓词过滤数组时遇到问题。我的代码是这样的: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
我正在尝试构建一个字符串数组,该数组将添加到 XML soap 请求中。 我有一个简单的循环来构建数组: MarcTagsList 是一个 NSArray 字符串,它包含值 ["82a","100a"
NSMutableString *str = [[NSMutableString alloc] init]; 假设 str 有权知道一个值“me”。 并且在单击按钮时我希望 str 的值被重置。即字符
我是 objective-c 的绝对新手 使用此代码 NSMutableString *teststring; [teststring appendString:@"hey"]; NSLog(test
将 Swift String 转换为 NSString 效果很好。 let string = "some text" let nsString = string as NSString 但是当我这样做
我知道类似的问题已经被一次又一次地问到,但我请求您耐心等待,因为我似乎找不到有帮助的答案。 我的应用程序存在漏洞,这让我抓狂。实际上,使用 Leaks 不会将它们报告为泄漏,但 ObjectAlloc
我正在使用 XMLParser 来解析一些 XML 数据,它使用 NSMutableString *resultString 来存储标记字符。在每个 (- parser: didStarElement
我以字典格式的形式向 nsmutablestring 添加一些文本内容,并且每个字典都由“,”(commos)分隔。但是当获取这个总字符串时,它会显示 (,) 到结尾的字符串。那么如何删除该可变字符串
我有一个很大的 NSMutableString(可能有数百兆字节),需要对其执行大量 rangeOfCharacterFromSet: 操作。 为了提高性能,我想让一个 NSOperationQueu
我有以下代码 NSMutableString *ibmcountryCodeLabel=[[NSMutableString alloc]init]; NSMutableString *imobileN
我是一名优秀的程序员,十分优秀!