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];
Author by
cyclingIsBetter
Updated on July 09, 2022Comments
-
cyclingIsBetter almost 2 years
In my project I have two file .txt (in Resources folder), how can I copy them inside documents folder?
-
taskinoor almost 13 yearsIn that case if the file already exists then remove that using removeItemAtPath:error:
-
cyclingIsBetter almost 13 yearsok 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 almost 13 yearsIf 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 almost 13 yearsanother 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?