2012-02-08 21 views
13

Estoy leyendo un archivo txt con un código muy simple. El problema es que en las declaraciones de registro solo obtengo la ruta del archivo pero el contenido es nulo. Supongo que el problema radica en la parte de codificación. Alguna sugerencia sobre cómo leer mi archivo de texto.cómo leer un archivo de texto en ios

NSStringEncoding encoding; 
NSString* content; 
NSString* path = [[NSBundle mainBundle] pathForResource:@"colorpalette" ofType:@"txt"]; 
if(path) 
{            
content = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:NULL]; 
} 
NSLog(@"path is %@",path); 
if (content) 
{ 
    NSLog(@" content of file is %@",content); 
} 
+1

¿Qué hay de la lectura de la 'error' proporcionada por el método? – cweinberger

+0

Puede intentar usar el parámetro de error para ver qué error se devuelve en lugar de pasarlo como NULL. –

+0

Joachim Isaksson Me aparece el error "La operación no se pudo completar. – Shubham

Respuesta

15

Aquí el parámetro de codificación no está configurado correctamente.

probar este

NSString* content = [NSString stringWithContentsOfFile:path 
               encoding:NSUTF8StringEncoding 
               error:NULL]; 
NSLog(@"%@",path); 
+1

Esa es una opción (posiblemente mejor si conoce la codificación), sin embargo stringWithContentsOfFile: usedEncoding: error: _es_ una sobrecarga perfectamente válida si no sabe la codificación. –

+0

descubrí el error ... En realidad, al momento de guardar el archivo de texto, seleccioné la codificación de texto en Western (Mac OS Roman) ... debe ser utf-8. Ahora el código funciona perfecto ... :) – Shubham

+0

te refieres a "NSLog (@"% @ ", contenido); "y no camino –

1

que no entiendo la codificación que está pasando la función "stringWithContentsOfFile". Intente pasarlo "NSUTF8StringEncoding". Si esto no funciona, cree una instancia NSError y páselo por referencia a la función.

6

utilizar el siguiente código para leer un archivo de texto desde Bundle:

NSError *error; 
NSString *strFileContent = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] 
    pathForResource: @"FileName" ofType: @"txt"] encoding:NSUTF8StringEncoding error:&error]; 

if(error) { //Handle error 

} 

NSLog(@"File content : %@ ", strFileContent); 
Cuestiones relacionadas