2011-04-11 39 views
68

如何在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]; 

我在资源上创建了MyFile.txt。

+4

请准确描述出了什么问题。 – 2011-04-11 10:17:21

回答

25

您的代码在我结束工作,我都只是测试它。你在哪里检查你的改变?使用文档目录路径。为了获得路径 -

NSLog(@"%@",documentsDirectory); 

,并从控制台复制路径,然后打开Finder和按CMD + Shift + G键和粘贴路径在这里,然后打开你的文件

+0

我想这是我错了..我已经创建MyFile内我的资源应用程序目录.. Bu没有改变那里..我在哪里检查或创建文件? – 2011-04-11 10:26:20

+2

我已经更新了我的答案,看那里 – saadnib 2011-04-11 10:56:21

107

可能这对你有用。

//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:NSUTF8StringEncoding 
             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]; 

} 
+1

我无法找到我写的文件,它似乎不存在 – 2011-04-11 10:18:19

+0

您可以更改文档目录路径。 – 2011-04-11 10:29:31

+0

使用 - #define DOCUMENTS_FOLDER [NSHomeDirectory()stringByAppendingPathComponent:@“Documents”] – 2011-04-11 10:30:46

7

尝试使

NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile"]; 

NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile.txt"]; 
9

斯威夫特

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) 
} 

斯威夫特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; 
} 

夫特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; 
}