在iOS上写一个文件
我如何在iOS上编写文件? 我试图用下面的代码来做,但我做错了什么:
char *saves = "abcd"; NSData *data = [[NSData alloc] initWithBytes:saves length:4]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile"]; [data writeToFile:appFile atomically:YES];
我在资源上创build了MyFile.txt。
你的代码正在工作,我刚刚testing过。 你在哪里检查你的改变? 使用文档目录path。 要获得path –
NSLog(@"%@",documentsDirectory);
并从控制台复制path,然后打开查找器,然后按Cmd + Shift + g并在此处粘贴path,然后打开文件
可能是这对你有用。
//Method writes a string to a text file -(void) writeToTextFile{ //get the documents directory: NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; //make a file name to write the data to using the documents directory: NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", documentsDirectory]; //create content - four lines of text NSString *content = @"One\nTwo\nThree\nFour\nFive"; //save content to the documents directory [content writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil]; } //Method retrieves content from documents directory and //displays it in an alert -(void) displayContent{ //get the documents directory: NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; //make a file name to write the data to using the documents directory: NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", documentsDirectory]; NSString *content = [[NSString alloc] initWithContentsOfFile:fileName usedEncoding:nil error:nil]; //use simple alert from my library (see previous post for details) [ASFunctions alert:content]; [content release]; }
迅速
func saveFile() { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory = paths[0] as! String let fileName = "\(documentsDirectory)/textFile.txt" let content = "Hello World" content.writeToFile(fileName, atomically: false, encoding: NSUTF8StringEncoding, error: nil) } func loadFile() { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory = paths[0] as! String let fileName = "\(documentsDirectory)/textFile.txt" let content: String = String(contentsOfFile: fileName, encoding: NSUTF8StringEncoding, error: nil)! println(content) }
Swift 2
func saveFile() { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(documentsDirectory)/textFile.txt" let content = "Hello World" do{ try content.writeToFile(fileName, atomically: false, encoding: NSUTF8StringEncoding) }catch _ { } } func loadFile()->String { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(documentsDirectory)/textFile.txt" let content: String do{ content = try String(contentsOfFile: fileName, encoding: NSUTF8StringEncoding) }catch _{ content="" } return content; }
Swift 3
func saveFile() { let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(documentsDirectory)/textFile.txt" let content = "Hello World" do{ try content.write(toFile: fileName, atomically: false, encoding: String.Encoding.utf8) }catch _ { } } func loadFile()->String { let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(documentsDirectory)/textFile.txt" let content: String do{ content = try String(contentsOfFile: fileName, encoding: String.Encoding.utf8) } catch _{ content="" } return content; }
尝试制作
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile"];
如
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile.txt"];