Red de conocimiento informático - Material del sitio web - Cómo usar NSFileHandle para escribir en un archivo

Cómo usar NSFileHandle para escribir en un archivo

Utilice los métodos proporcionados por la clase NSFilehandle para trabajar con archivos de manera más eficiente.

En términos generales, se siguen los siguientes tres pasos al procesar archivos:

1. Abra el archivo y obtenga un objeto NSFileHandle para hacer referencia a él en operaciones de E/S posteriores.

p>

2. Realizar operaciones de E/S (lectura, escritura, actualización)

3. Cerrar el archivo

A continuación se resumen algunos métodos NSFileHandle de uso común en esta tabla. , fh es un objeto NSFileHandle, los datos son un objeto NSData, la ruta es un objeto NSString y el desplazamiento es una variable larga simple sin signo.

La tabla anterior también enumera métodos para obtener NSFileHandles para entrada estándar, salida estándar, error estándar y configuración nula. Su formato es

fileHandleWithDevice, donde Dispositivo puede ser StandardInput, StandardOutput,

StandardError o NullDevice.

Cabe señalar que la clase NSFileHandle no proporciona la función de crear archivos

. Los archivos deben crearse utilizando métodos NSFileManager. Por lo tanto, los métodos fileHandleForWritingAtPath: y hfileHandleUpdatingAtPath: asumen que el archivo ya existe; de ​​lo contrario, devuelven nulo. Para ambos métodos, el desplazamiento del archivo se establece al principio del archivo, por lo que ambos comienzan a escribir (o leer en modo de actualización) desde el principio del archivo. Además, si está programando en un sistema UNIX, debe tener cuidado de abrir el archivo para leerlo en lugar de truncarlo; si desea hacerlo, tendrá que hacerlo usted mismo

.

El siguiente código abre el archivo testfile que se ha creado, lee su contenido y lo copia en un archivo llamado testout.

#import lt;Foundation/Foundation.hgt;

int main(int argc, const char * argv[])

{

@autoreleasepool {

NSFileHandle *inFile, *outFile;

NSData *buffer;

/[[NSFileManager defaultManager] createFileAtPath:@"test.txt " contenidos: @" sdfjdsfdf " atributos: nil];

//Abra el archivo testfile.txt para leer

inFile = [NSFileHandle fileHandleForReadingAtPath: @"testfile.txt"];

if(inFile == nil)

{

NSLog(@"¡Error al abrir la lectura del archivo testfile.txt!");

Return 1;

}

// Crea un archivo para escribir datos (la primera vez es necesaria)

[[NSFileManager defaultManager] createFileAtPath: @" testout.txt" contenidos: nil atributos: nil];

//Abrir el archivo testout.txt para operaciones de escritura

outFile = [NSFileHandle fileHandleForWritingAtPath:@ "testout.txt"];

if(outFile == nil)

{

NSLog(@"Apertura de prueba

buffer = [inFile readDataToEndOfFile];

[outFile writeData: buffer]

/ Cerrar dos archivos

[inFile closeFile]

[ outFile closeFile];

Verifique que se haya escrito el contenido del archivo

NSLog(@"@",[NSString stringWithContentsOfile:@"testout.txt" encoding.NSUTF8StringEncoding error: nil ]);

}

devuelve 0;

}