Monday, May 16, 2011

Read/Write txt File in iPhone SDK

To Write the file in iPhone SDK use Following Method:

-(void)writeFile:(NSString *)fileName data:(id)data

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];

NSError *error=NULL;


[data writeToFile:appFile atomically:YES encoding:NSUTF8StringEncoding error:&error];


if (error != NULL)

{

//Check Error Here. if any.

}

}


To Read the file in iPhone SDK use Following Method:


-(NSString *)readFile:(NSString *)fileName

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];

NSFileManager *fileManager=[NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:appFile])

{

NSError *error= NULL;

id resultData=[NSString stringWithContentsOfFile:appFile encoding:NSUTF8StringEncoding error:&error];

if (error == NULL)

{

return resultData;

}

}

return NULL;

}


Example to Write the Array in txt file:


-(void)writeFile:(NSString *)fileName dataArray:(NSArray *)data

{

NSMutableString *dataString=[NSMutableString stringWithString:@""];

for (int i=0; i<[data count]; i++)

{

if (i == [data count]-1)

{

[(NSMutableString *)dataString appendFormat:@"%@",[data objectAtIndex:i]];

}

else

{

[(NSMutableString *)dataString appendFormat:@"%@\n",[data objectAtIndex:i]];

}

}

[self writeFile:fileName data:dataString];

}

//To Write the File.

NSString *obj1=[NSString stringWithFormat:@"APPLE"];

NSString *obj2=[NSString stringWithFormat:@"GOOGLE"];

NSString *obj3=[NSString stringWithFormat:@"HP"];

NSArray *array=[NSArray arrayWithObjects:obj1, obj2, obj3, nil];

[self writeFile:@"arrayTest.txt" dataArray:array];


//Read the File

NSString *result=[self readFile:@"arrayTest.txt"];

NSArray *outputArray=[result componentsSeparatedByString:@"\n"];

for (int i=0; i<[outputArray count]; i++)

{

NSLog(@"the output=%@ index=%i",[outputArray objectAtIndex:i], i);

}


Update if already file exist:


-(void)writeFile:(NSString *)fileName data:(id)data

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];

NSError *error=NULL;

NSFileManager *fileManager=[NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:appFile])

{

NSString *fileString=[NSString stringWithContentsOfFile:appFile encoding:NSUTF8StringEncoding error:&error];

data=[data stringByAppendingFormat:@"\n%@",fileString];

[data writeToFile:appFile atomically:YES encoding:NSUTF8StringEncoding error:&error];

}

else

{

[data writeToFile:appFile atomically:YES encoding:NSUTF8StringEncoding error:&error];

}

if (error != NULL)

{

//Check Error Here. if any.

}

}


Thats it!!!!