在 iOS 上写入文件

问题描述 投票:0回答:5

如何在 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。

ios iphone file nsbundle
5个回答
110
投票

也许这对你有用。

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

}

26
投票

你的代码在我这边工作正常,我刚刚测试过。您在哪里检查您的更改?使用文档目录路径。获取路径 -

NSLog(@"%@",documentsDirectory);

从控制台复制路径,然后打开查找器并按 Cmd+shift+g 并将路径粘贴到此处,然后打开文件


12
投票

斯威夫特

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

7
投票

尝试制作

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

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

0
投票

ios文件写入:https://antinvestment.blogspot.com/2024/09/ios-file-write.html

Import File Manager  
NSFileManage * fileManager =  [NSFileManager defaultManager] ;

 
Get current folder 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *currentPath = [fileManager  currentDirectoryPath ]; 




Import Documents Folder   

NSFileManager * fileManager = [NSFileManager defaultManager];
NSArray *dirPath =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString documentPath = [dirPath objectAtIndex:0]; 

 
Move current folder 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocument, NSUserDomainMask, YES);

NSString documentPath = [dirPath objectAtIndex:0]; 

if ([fileManager  changeCurrentDirectoryPath:documentPath ] == NO){
  // Folder cannot be moved
} else {
 // Moved folder 
} 
 
Create a folder  

 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *newDir = @"/test";
if (fileManager  createDirectoryAtPath :newDir  withIntermediateDirectories : YES  attributes : nilerror : NULL ] ==  NO){
  // newDir folder creation failed
} else {
  // newDir folder creation succeeded 
} 

 


 Delete folder  

NSFileManage * fileManager = [NSFileManager defaultManager]
NSString *delDir = @"/test";
if (fileManager  removeItem AtPath :delDir  error : NULL ] ==  NO){
  // delDir folder deletion failed
} else {
  // delDir folder deletion successful 
} 

 
Show list within folder  

NSFileManage * fileManager = [NSFileManager defaultManager];
NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocument, NSUserDomainMask, YES) ;
NSString *documentPath = [dirPath objectAtIndex:0]; 

NSArray *filelist = [fileManager  contentsOfDirectoryAtPath:  documentPath error:NULL]; 

 
Check file/folder properties information  

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *attDir = @"/";
NSDictionary *attributes;
attributes = [fileManager  attributesOfItemAtPath:attDir  error:NULL];

NSLog(@"File information: %@", [attributes objectForKey: NSFileType ]); 


Defined property information 

 

FOUNDATION_EXPORT NSString  *  const  NSFileType; 

FOUNDATION_EXPORT  NSString  *  const  NSFileTypeDirectory;

FOUNDATION_EXPORT  NSString  *  const  NSFileTypeRegular;

FOUNDATION_EXPORT  NSString  *  const  NSFileTypeSymbolicLink;

FOUNDATION_EXPORT  NSString  *  const  NSFileTypeSocket;

FOUNDATION_EXPORT  NSString  *  const  NSFileTypeCharacterSpecial;

FOUNDATION_EXPORT  NSString  *  const  NSFileTypeBlockSpecial;

FOUNDATION_EXPORT  NSString  *  const  NSFileTypeUnknown;

FOUNDATION_EXPORT NSString  *  const  NSFileSize; 

FOUNDATION_EXPORT  NSString  *  const  NSFileModificationDate;

FOUNDATION_EXPORT  NSString  *  const  NSFileReferenceCount;

FOUNDATION_EXPORT  NSString  *  const  NSFileDeviceIdentifier;

FOUNDATION_EXPORT  NSString  *  const  NSFileOwnerAccountName;

FOUNDATION_EXPORT  NSString  *  const  NSFileGroupOwnerAccountName;

FOUNDATION_EXPORT  NSString  *  const  NSFilePosixPermissions;

FOUNDATION_EXPORT  NSString  *  const  NSFileSystemNumber;

FOUNDATION_EXPORT  NSString  *  const  NSFileSystemFileNumber;

FOUNDATION_EXPORT  NSString  *  const  NSFileExtensionHidden;

FOUNDATION_EXPORT  NSString  *  const  NSFileHFSCreatorCode;

FOUNDATION_EXPORT  NSString  *  const  NSFileHFSTypeCode;

FOUNDATION_EXPORT  NSString  *  const  NSFileImmutable;

FOUNDATION_EXPORT  NSString  *  const  NSFileAppendOnly;

FOUNDATION_EXPORT  NSString  *  const  NSFileCreationDate;

FOUNDATION_EXPORT  NSString  *  const  NSFileOwnerAccountID;

FOUNDATION_EXPORT  NSString  *  const  NSFileGroupOwnerAccountID;

 


Check file existence 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *extDir = @"/test.txt";
if (fileManager  fileExistAtPath :extDir] == YES){
  // file exists 
} else {
  // file does not exist 
} 


 Compare file contents 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *firstFile = @"/test.txt";
NSString *secondFile = "@"/my.txt";

if (fileManager  contentEqualAtPath :firstFile  andPath :secondFile] == YES){
  // File contents are the same 
} else {
  // File contents are different 
}


Move or rename a file 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *firstFile = @"/test.txt";
NSString *secondFile = "@"/my.txt";

if (fileManager  moveItemAtPath :firstFile  toPath :secondFile  error :NULL] == YES){
  // File move/rename success
} else {
  // File move/rename failure
}

 
Copy file 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *firstFile = @"/test.txt";
NSString *secondFile = "@"/my.txt";

if (fileManager  copyAtPath :firstFile  toPath :secondFile  error :NULL] == YES){
  // File copy success
} else {
  // File copy failure
}


Reading a file (NSData type) 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *firstFile = @"/test.txt";
NSData * dataBuffer = [fileManager  contentsAtPath :firstFile]; 

 
Create a file (read and write NSData type - copy, overwrite existing file) 

NSFileManage * fileManager = [NSFileManager defaultManager];
NSString *firstFile = @"/test.txt";
NSData * dataBuffer = [fileManager  contentsAtPath :firstFile]; 
NSString *secondFile = @"/my.txt"
[fileManager  createFileAtPath :secondFile  contents :dataBuffer  attributes :NULL]
© www.soinside.com 2019 - 2024. All rights reserved.