我正在尝试从一个文件中获取内容并将其写入另一个文件。我读得很好,但我无法将其写入另一个文件。
我有一个单词数据库。我想根据字母数将单词分成不同的文件。所有四个字母单词都放在一个文件中,依此类推。我在我的资源中添加了一个名为“4letter”的txt文件,以下是我的代码:
NSError *error;
//READ
NSString *dbFile = [[NSBundle mainBundle] pathForResource:@"words" ofType:@"txt"];
NSString *test = [NSString stringWithContentsOfFile:dbFile encoding:NSUTF8StringEncoding error:&error];
//convert from string to array
NSArray *lines = [test componentsSeparatedByString:@"\n"];
NSFileHandle *logFile = nil;
logFile = [NSFileHandle fileHandleForWritingAtPath:[[NSBundle mainBundle] pathForResource:@"4letter" ofType:@"txt"]];
//Test if write works
for (int i=0; i<5; i++)
{
NSString *randomAnagram = [[lines objectAtIndex:i] lowercaseString];
[logFile writeData: [randomAnagram dataUsingEncoding: NSNEXTSTEPStringEncoding]];
}
答案 0 :(得分:22)
在iOS中,您无法在应用程序包中写入文件 - 整个包是只读的。请改用Documents文件夹中的路径。
答案 1 :(得分:8)
有关更好的说明,请参阅特殊File System Programming Guide 在iOS中,您无法在应用程序包中写入文件 - 整个包是只读的。
在iCloud备份的上下文中,考虑阅读iOS Data Storage Guidelines以更好地理解以下目录的用途。
<强>&LT; APPLICATION_HOME&GT; /AppName.app 强>
这是包含应用程序本身的包目录。别写了 这个目录的任何东西。为了防止篡改,捆绑目录 在安装时签署。写入此目录会更改 签名并阻止您的应用再次启动。
<强>&LT; APPLICATION_HOME&GT; /文档/ 强>
使用此目录存储关键用户文档和应用数据 文件。关键数据是您的应用无法重新创建的任何数据, 例如用户生成的内容。该目录的内容可以是 通过文件共享提供给用户。这个内容 目录由iTunes备份。
<强>&LT; APPLICATION_HOME&GT; /库/ 强>
此目录是非用户文件的顶级目录 数据文件。您通常将文件放在几个标准之一 子目录,但您也可以为文件创建自定义子目录 您想要备份但不要向用户公开。你不应该使用 此目录用于用户数据文件。该目录的内容 (Caches子目录除外)由备份 iTunes中。有关Library目录的其他信息,请参阅 “图书馆目录存储特定于应用程序的文件。”
请参阅iOS Standard Directories: Where Files Reside
中的完整列表(tmp /,Documents / Inbox) 更新
我使用NSFileManager方法URLForDirectory:inDomain:appropriateForURL:create:error:
答案 2 :(得分:7)
像Caleb所说,你不能写入你的应用程序的目录,但你可以写入你的应用程序的Documents文件夹。你可以这样得到它:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
答案 3 :(得分:4)
您的应用套装是只读的。我可以通过两种方式看到:
1)写入文件夹:
NSArray *pathList = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [myPathList objectAtIndex:0];
2)使用sqlite数据库。这和1相同(你必须在文档中保存db),但是你使用的是sqlite数据库。我认为这比许多txt和plist文件更好:here's a tutorial on the topic。
答案 4 :(得分:2)
我使用以下代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"set.txt"];
NSString *data=@"Kostas";
[data writeToFile:appFile atomically:YES];
NSString *myData = [NSString stringWithContentsOfFile:appFile];
NSLog(@"Data : %@ ",myData);