IOS: copy a file in documents folder

73,969

Solution 1

Copies txtFile from resource to document if not already present.

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *txtPath = [documentsDirectory stringByAppendingPathComponent:@"txtFile.txt"];

if ([fileManager fileExistsAtPath:txtPath] == NO) {
    NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"txtFile" ofType:@"txt"];
    [fileManager copyItemAtPath:resourcePath toPath:txtPath error:&error];
}

If you want to overwrite every time then try this:

if ([fileManager fileExistsAtPath:txtPath] == YES) {
    [fileManager removeItemAtPath:txtPath error:&error];
}

NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"txtFile" ofType:@"txt"];
[fileManager copyItemAtPath:resourcePath toPath:txtPath error:&error];

Solution 2

Swift 3

code for file is exist or not, if not then copy.

func CheckFileisExistOrNot(strPath:String) {
    let filemgr = FileManager.default
    if !filemgr.fileExists(atPath: strPath) {
        let resorcePath = Bundle.main.path(forResource: "\(Global.g_databaseName)", ofType: ".db")
        do {
            try filemgr.copyItem(atPath: resorcePath!, toPath: strPath)
        }catch{
            print("Error for file write")
        }
    }
}

Solution 3

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [[paths objectAtIndex:0]stringByAppendingString:@"csvfile"];

NSString *txtPath = [documentsDirectory stringByAppendingPathComponent:@"sample.csv"];

if ([fileManager fileExistsAtPath:txtPath] == NO) {
    NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@".csv"];
    [fileManager copyItemAtPath:resourcePath toPath:txtPath error:&error];
Share:
73,969
cyclingIsBetter
Author by

cyclingIsBetter

Updated on July 09, 2022

Comments

  • cyclingIsBetter
    cyclingIsBetter almost 2 years

    In my project I have two file .txt (in Resources folder), how can I copy them inside documents folder?

  • taskinoor
    taskinoor almost 13 years
    In that case if the file already exists then remove that using removeItemAtPath:error:
  • cyclingIsBetter
    cyclingIsBetter almost 13 years
    ok then, if I want to make changes at my file, I modify the file that is inside "Resource Folder" and after I replace this file in documents folder as you show me...ok?
  • taskinoor
    taskinoor almost 13 years
    If you have changed the file in resource then the file in document should be overwritten after running the 2nd code. Is it working or not? Have you checked?
  • cyclingIsBetter
    cyclingIsBetter almost 13 years
    another thing: in this way my file is in documents folder and it's ok. Now I want to read this file, what is the way to read it?