2009-09-29 25 views

Respuesta

136

Los archivos en su " La carpeta de recursos " es en realidad el contenido de su paquete de aplicaciones. Entonces, primero necesita obtener la ruta del archivo dentro de su paquete de aplicaciones.

NSString* path = [[NSBundle mainBundle] pathForResource:@"filename" 
               ofType:@"txt"]; 

Luego, cargar el contenido en un NSString es aún más fácil.

NSString* content = [NSString stringWithContentsOfFile:path 
               encoding:NSUTF8StringEncoding 
               error:NULL]; 

Como una ventaja puede tener diferentes versiones localizadas de filename.txt y este código se ha podido recuperar el archivo del idioma actualmente seleccionado correctamente.

+0

La codificación no funciona para todos los archivos. Si crea un archivo de texto en Windows con el símbolo del euro con codificación ANSI, entonces el símbolo del euro se convertirá en algún otro símbolo utilizando el código anterior. ¿Hay alguna forma genérica de admitir todo el conjunto de caracteres utilizando una sola codificación? –

8

La primera cosa que quiero hacer es obtener la ruta del archivo de texto que desea leer. Como está en su carpeta de Recursos, supongo que está copiando en el paquete principal de la aplicación. Se puede obtener la ruta de un archivo en su paquete principal utilizando de NSBundle pathForResource:ofType:

NSBundle *mainBundle = [NSBundle mainBundle]; 
NSString *filePath = [mainBundle pathForResource:@"filename" ofType:@"txt"];

continuación, puede leer el archivo en ese camino en un NSString directamente utilizando initWithContentsOfFile:usedEncoding:error:

NSStringEncoding encoding; 
NSError *error; 
NSString *fileContents = [[[NSString alloc] initWithContentsOfFile:filePath 
                 usedEncoding:&encoding 
                  error:&error] 
          autorelease];
Cuestiones relacionadas