Objective C - 创建文本文件以在 Cocoa 中逐行读取和写入

Posted

技术标签:

【中文标题】Objective C - 创建文本文件以在 Cocoa 中逐行读取和写入【英文标题】:Objective C - Create text file to read and write line by line in Cocoa 【发布时间】:2013-07-20 17:17:28 【问题描述】:

我正在构建一个 Mac 应用程序,我有 2 个问题:

    我想创建一个文本文件来读取和写入数据。我不知道如何创建一个文本文件来读取和写入数据。是否使用 结构? 我想创建一个 XML 文件来读取和写入数据。我可以为 XML 创建一个结构吗?

你有什么建议吗?提前致谢

【问题讨论】:

看看***.com/a/3711079/944634 【参考方案1】:

好吧,要创建一个文件,只需使用

[[NSFileManager defaultManager] createFileAtPath:@"Your/Path" contents:nil attributes:nil];

这将创建一个空文件,您可以对其进行写入或读取。要编写文本(或 XML),只需像这样使用NSStringwriteToFile:atomically:encoding:error: 方法

NSString *str = //Your text or XML
[str writeToFile:"Your/Path" atomically:YES encoding:NSUTF8StringEncoding error:nil];

要从文件中读取,只需使用该文件的内容创建一个NSString

NSString *contents = [NSString stringWithContentsOfFile:@"Your/Path"];

或者,如果它不包含字符串,则从文件中获取NSData 对象

NSData *contents = [NSData dataWithContentsOfFile:@"Your/Path"];

【讨论】:

?你这是什么意思? 我有一个问题:我可以使用 struct 来保存文件中的数据吗? 您可以使用结构来保存文件中的信息,但如果您使用的是objective c,我建议您使用一个类,例如名为File的类,然后在该类(文件名、大小、内容等)。 NSString *str = //你的文本或 XML [str writeToFile:"Your/Path" atomically:YES encoding:NSUTF8StringEncoding error:nil];可以使用 NSMutablearray 代替 NSString 吗? 你可以,但是那会把数据写成plist,它是XML的一种形式。【参考方案2】:
/**************************main.m******************************
    NS FILE HANDLE READ & WRITE
    reading and writing in same file
    Created by abdulsathar on 6/16/14.
***************************************************************/

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])

   @autoreleasepool  //ARC
    
        NSFileHandle *file;
        //object for File Handle
        NSError *error;
        //crearing error object for string with file contents format
        NSMutableData *writingdatatofile;
        //create mutable object for ns data
        NSString *filePath=[NSString stringWithFormat:@"/Users/chandrakumar/Documents/abdul/doc.txt"];
        //telling about File Path for Reading for easy of access
        file = [NSFileHandle fileHandleForReadingAtPath:@"/Users/chandrakumar/Documents/abdul/doc.txt"];
        //assign file path directory
            if (file == nil) //check file exist or not
                NSLog(@"Failed to open file");
        NSString *getfileContents = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
        //access file contents with out ns handle method
            if (error) //check error flag for file present or not
                NSLog(@"Error reading file: %@", error.localizedDescription);
        NSLog(@"contents: %@", getfileContents);
        //display file contents in main file
        NSArray *listArray = [getfileContents componentsSeparatedByString:@"\n"];
        //caluculate list of line present in files
        NSLog(@"items = %ld", [listArray count]);
        const char *writingchar = "how are you";
        writingdatatofile = [NSMutableData dataWithBytes:writingchar length:strlen(writingchar)];
        //convert string format into ns mutable data format
        file = [NSFileHandle fileHandleForUpdatingAtPath: @"/Users/chandrakumar/Documents/abdul/new.txt"];
        //set writing path to file
            if (file == nil) //check file present or not in file
                NSLog(@"Failed to open file");
        [file seekToFileOffset: 6];
        //object pointer initialy points the offset as 6 position in file
        [file writeData: writingdatatofile];
        //writing data to new file
        [file closeFile];
        //close the file
    
    return 0;`enter code here`


/***********************************OUTPUT********************************************

 2014-06-17 14:55:39.695 storage[4075:303] contents: hello how are you my dearservice

*************************************************************************************/

【讨论】:

以上是关于Objective C - 创建文本文件以在 Cocoa 中逐行读取和写入的主要内容,如果未能解决你的问题,请参考以下文章

将NSArray中的每个NSString元素显示为UIButton Objective C

如何在 Swift 或 Objective C 中将文本添加到文件中?

从服务器 Objective C 或 Swift 下载文件

单击按钮以在按钮下方显示 Nib

带有分隔线的Objective C UIButton并在选择时更改文本颜色

Objective c - 按单词搜索