English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 | Uso |
---|---|
Directory | Obtener la instancia del directorio padre. |
DirectoryName | Obtener la cadena que representa la ruta completa del directorio. |
Exists | Obtener un valor que indique si el archivo existe. |
Extension | Obtener la cadena que representa la parte de extensión del archivo. |
FullName | Obtener la ruta completa del directorio o archivo. |
IsReadOnly | Obtener o establecer un valor que determine si el archivo actual es de solo lectura. |
LastAccessTime | Obtener o establecer la hora de la última acceso al archivo o directorio actual. |
LastWriteTime | Obtener o establecer la hora de la última escritura del archivo o directorio actual. |
Length | Obtener el tamaño actual del archivo (en bytes). |
Name | Obtener el nombre del archivo. |
Método | Uso |
---|---|
AppendText | Crear un StreamWriter, que agrega texto al archivo representado por esta instancia de FileInfo. |
CopyTo | Copiar el archivo existente a un nuevo archivo sin permitir la sobrescripción del archivo existente. |
Create | Crear un archivo. |
CreateText | Crear un StreamWriter para escribir en un nuevo archivo de texto. |
Decrypt | Desencriptar el archivo encriptado por el cuenta actual utilizando el método Encrypt. |
Delete | Eliminar el archivo especificado. |
Encrypt | Encriptar el archivo para que solo el cuenta utilizada para encriptar el archivo pueda desencriptarlo. |
GetAccessControl | Obtener un objeto FileSecurity, que encapsula las entradas de la lista de control de acceso (ACL) del archivo especificado. |
MoveTo | Mover el archivo especificado a una nueva ubicación y proporcionar la opción de nombre de archivo nuevo. |
Open | Abrir uno en el FileMode especificado. |
OpenRead | Crear un FileStream solo de lectura. |
OpenText | Crear con UTF8StreamReader codificado, el codificador puede leer archivos de texto existentes. |
OpenWrite | Crear un FileStream solo de escritura. |
Replace | Reemplazar el contenido del archivo especificado con el objeto FileInfo actual, eliminar el archivo original y crear una copia de respaldo del archivo de reemplazo. |
ToString | Para 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.