English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

FileInfo de C#

 Aquí, aprenderá cómo usar la clase FileInfo para realizar operaciones de lectura y escritura en archivos físicos./Operaciones de escritura.

La clase FileInfo proporciona las mismas funcionalidades que la clase File estática, pero puede controlar la lectura y escritura del archivo manualmente mediante código que escribe bytes desde o hacia el archivo./Las operaciones de escritura tienen más control.

Propiedades importantes y métodos de FileInfo:

PropiedadesUso
DirectoryObtener la instancia del directorio padre.
DirectoryNameObtener la cadena que representa la ruta completa del directorio.
ExistsObtener un valor que indique si el archivo existe.
ExtensionObtener la cadena que representa la parte de extensión del archivo.
FullNameObtener la ruta completa del directorio o archivo.
IsReadOnlyObtener o establecer un valor que determine si el archivo actual es de solo lectura.
LastAccessTimeObtener o establecer la hora de la última acceso al archivo o directorio actual.
LastWriteTimeObtener o establecer la hora de la última escritura del archivo o directorio actual.
LengthObtener el tamaño actual del archivo (en bytes).
NameObtener el nombre del archivo.
MétodoUso
AppendTextCrear un StreamWriter, que agrega texto al archivo representado por esta instancia de FileInfo.
CopyToCopiar el archivo existente a un nuevo archivo sin permitir la sobrescripción del archivo existente.
CreateCrear un archivo.
CreateTextCrear un StreamWriter para escribir en un nuevo archivo de texto.
DecryptDesencriptar el archivo encriptado por el cuenta actual utilizando el método Encrypt.
DeleteEliminar el archivo especificado.
EncryptEncriptar el archivo para que solo el cuenta utilizada para encriptar el archivo pueda desencriptarlo.
GetAccessControlObtener un objeto FileSecurity, que encapsula las entradas de la lista de control de acceso (ACL) del archivo especificado.
MoveToMover el archivo especificado a una nueva ubicación y proporcionar la opción de nombre de archivo nuevo.
OpenAbrir uno en el FileMode especificado.
OpenReadCrear un FileStream solo de lectura.
OpenTextCrear con UTF8StreamReader codificado, el codificador puede leer archivos de texto existentes.
OpenWriteCrear un FileStream solo de escritura.
ReplaceReemplazar el contenido del archivo especificado con el objeto FileInfo actual, eliminar el archivo original y crear una copia de respaldo del archivo de reemplazo.
ToStringPara devolver la ruta en forma de cadena.

El siguiente ejemplo muestra cómo leer manualmente bytes desde el archivo y luego usar UTF8La codificación las convierte en cadenas:

Ejemplo: leer archivo usando la clase FileInfo

//Crear el objeto FileInfo para la ruta especificada            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//Abrir el archivo para lectura/escritura
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
//Crear un array de bytes del mismo tamaño que el FileStream
byte[] fileBytes = new byte[fs.Length];
//Definir el contador para verificar cuántos bytes se deben leer. Reducir el contador cada vez que se lee un byte
int numBytesToRead = (int)fileBytes.Length;
//El contador indica la cantidad de bytes ya leídos
int numBytesRead = 0;
//Iterar hasta que se lean todos los bytes desde FileStream
while (numBytesToRead > 0)
{
    int n = fs.Read(fileBytes, numBytesRead, numBytesToRead);
        
    if (n == 0)
        break;
    numBytesRead += n;
    numBytesToRead -= n;
}
//Después de leer todos los bytes desde FileStream, puede usar UTF8Codificación para convertirlo en una cadena
string filestring = Encoding.UTF8.GetString(fileBytes);

Como se muestra en el código anterior, debe escribir mucho código para leer desde FileSream/Escribir una cadena. Mientras tanto, usar StreamReader y StreamWriter puede completar fácilmente la misma lectura/Operaciones de escritura.

El siguiente ejemplo muestra cómo el StreamReader facilita la lectura de cadenas desde el archivo:

Ejemplo: leer archivo usando StreamReader

//Crear el objeto FileInfo para la ruta especificada            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//Abrir el archivo para lectura/escritura
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read); 
//Cree un objeto StreamReader pasando el objeto FileStream que necesita operar
StreamReader sr = new StreamReader(fs);
//Utilice el método ReadToEnd para leer todo el contenido del archivo
string fileContent = sr.ReadToEnd();
//Cerrar el objeto StreamReader después de la operación
sr.Close();
fs.Close();

Nota, fi.Open() tiene tres parámetros:

  • El primer parámetro es FileMode, utilizado para crear y abrir el archivo (si no existe el archivo);

  • El segundo parámetro FileAccess representa la operación de lectura;

  • El tercer parámetro es compartir el archivo con otros usuarios para lectura al abrirlo.

El siguiente ejemplo muestra cómo StreamWriter facilita la escritura de cadenas en un archivo:

Ejemplo: usar StreamWriter para escribir texto en un archivo

//Crear el objeto FileInfo para la ruta especificada            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//Abrir el archivo para lectura/escritura
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); 
//Crear el objeto StreamWriter para escribir cadenas en FileStream
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Another line from streamwriter");
sw.Close();

No se puede realizar tanto la lectura como la escritura en el mismo objeto FileStream. Si ya está leyendo el archivo, cree un FileStream separado para escribir en el mismo archivo, como se muestra a continuación:

Ejemplo: StreamReader y StreamWriter

//Crear el objeto FileInfo para DummyFile.txt
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//Abrir DummyFile.txt para operaciones de lectura
FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
//Abrir DummyFile.txt para operaciones de escritura
FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
          
//Obtener StreamReader
StreamReader sr = new StreamReader(fsToRead);
//Usar el objeto StreamReader para leer todo el texto
string fileContent = sr.ReadToEnd();
sr.Close();
//Obtener StreamWriter
StreamWriter sw = new StreamWriter(fsToWrite);
//Escribir algo de texto con StreamWriter
sw.WriteLine("Another line from streamwriter");
sw.Close();
//Cerrar todos los objetos Stream
fsToRead.Close();
fsToWrite.Close();

Por lo tanto, puede usar las clases FileInfo, StreamReader y StreamWriter para leer archivos físicos/Escribir contenido.