Para diseñar la función "disco duro de red", primero debe estar familiarizado con las operaciones de procesamiento de archivos y carpetas en .NET. La clase de archivo y la clase de directorio son las dos clases más importantes. Comprenderlos facilitará enormemente la implementación de funciones posteriores.
Las clases System.IO.File y System.IO.FileInfo
harán un uso extensivo del contenido relacionado con las operaciones del sistema de archivos en el proceso de diseño e implementación del "disco duro de red". Por lo tanto, esta sección primero presenta brevemente las dos clases .NET relacionadas con el sistema de archivos.
La clase System.IO.File y la clase System.IO.FileInfo proporcionan principalmente varias operaciones relacionadas con archivos, y es necesario hacer referencia al espacio de nombres System.IO al usarlas. Sus principales atributos y métodos se presentan a continuación a través de ejemplos de programas.
(1) Método de apertura de archivos: File.Open
La declaración de este método es la siguiente:
FileStream público estático Open (ruta de cadena, modo FileMode)
El siguiente código abre el archivo denominado newFile.txt almacenado en el directorio c:tempuploads y en el archivo Escribe hola en .
OpenFile vacío privado()
{
FileStream.TextFile=File.Open(@"c:tempuploadsnewFile.txt",FileMode.Append);
byte [] Información = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
TextFile.Write(Info,0,Info.Longitud);
Archivo de texto.Close();
}
(2) Método de creación de archivos: File.Create
La declaración de este método es la siguiente:
public static FileStream Create(ruta de cadena;)
El siguiente código demuestra cómo crear un archivo llamado newFile.txt en c:tempuploads.
Dado que el método File.Create otorga acceso completo de lectura/escritura a archivos nuevos de forma predeterminada a todos los usuarios, el archivo se abre con acceso de lectura/escritura y debe cerrarse antes de que otra aplicación pueda abrirlo. Para hacer esto, necesita usar el método Close de la clase FileStream para cerrar el archivo creado.
MakeFile vacío privado()
{
FileStream NewText=File.Create(@"c:tempuploadsnewFile.txt");
NuevoTexto.Cerrar();
}
(3) Método de eliminación de archivos: File.Delete
Este método se declara de la siguiente manera:
public static void Delete(ruta de cadena)
El siguiente código demuestra cómo eliminar el archivo newFile.txt en el directorio c:tempuploads.
vacío privado DeleteFile()
{
Archivo.Delete(@"c:tempuploadsnewFile.txt");
}
(4) Método de copia de archivos: File.Copy
Este método se declara de la siguiente manera:
public static void Copy(string sourceFileName,string destFileName,bool overwrite)
El siguiente código copia c:tempuploadsnewFile.txt en c:tempuploads; Copia de seguridad.txt.
Dado que el parámetro OverWrite del método Cope está establecido en verdadero, si el archivo BackUp.txt ya existe, el archivo copiado lo sobrescribirá.
CopyFile vacío privado()
{
Archivo.Copy(@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
}
(5) Método de movimiento de archivos: File.Move
Este método se declara de la siguiente manera:
public static void Move(string sourceFileName,string destFileName)
El siguiente código puede mover el archivo BackUp.txt en c:tempuploads al directorio raíz de; conducir c.
Nota:
La transferencia de archivos solo se puede realizar en el mismo disco lógico. Si intenta transferir archivos desde la unidad c a la unidad d, se producirá un error.
MoveFile vacío privado()
{
Archivo.Move(@"c:tempuploadsBackUp.txt",@"c:BackUp.txt");
}
(6) Método para establecer atributos de archivo: File.SetAttributes
Este método se declara de la siguiente manera:
public static void SetAttributes(ruta de cadena,FileAttributes fileAttributes)
El siguiente código puede configurar los atributos del archivo c:tempuploadsnewFile.txt; solo lectura u oculto.
SetFile vacío privado()
{
Archivo.SetAttributes(@"c:tempuploadsnewFile.txt",
FileAttributes.ReadOnly|FileAttributes.Hidden);
}
Además de los atributos ocultos y de solo lectura utilizados comúnmente, los archivos también tienen Archivo (estado de archivo), Sistema (archivos del sistema), Temporal (archivos temporales), etc. Para obtener detalles sobre los atributos de archivo, consulte la descripción de FileAttributes en MSDN.
(7) Método para determinar si un archivo existe: File.Exist
Este método se declara de la siguiente manera:
public static bool Exists (ruta de cadena)
El siguiente código determina si el archivo c:tempuploadsnewFile.txt existe. Si existe, primero copie el archivo, luego elimínelo y finalmente mueva el archivo copiado. Si no existe, primero cree el archivo, luego abra el archivo y realice operaciones de escritura, y finalmente configure los atributos del archivo en solo lectura; y escondido.
if(File.Exists(@"c:tempuploadsnewFile.txt")) //Determina si el archivo existe
{
CopyFile(); //Copiar el archivoDeleteFile(); //Eliminar el archivoMoveFile() //Mover el archivo
}
demás
{
MakeFile(); //Generar archivo OpenFile(); //Abrir archivo SetFile() //Establecer atributos de archivo
}
Además, la clase Archivo proporciona más soporte para texto Texto.
· AppendText: agrega texto a un archivo existente
· CreateText: crea o abre un nuevo archivo para escribir texto
· OpenText: abre un archivo de texto existente para leer
Pero el método anterior opera principalmente en texto codificado en UTF-8, por lo que parece no ser lo suficientemente flexible. Se recomienda que los lectores utilicen el siguiente código para operar archivos txt.
· Realice la operación de "lectura" en archivos txt. El código de muestra es el siguiente:
StreamReader TxtReader = new StreamReader(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
cadena Contenido de archivo;
Contenido de archivo = TxtReader.ReadEnd();
TxtReader.Close();
· Realizar la operación de "escritura" en el archivo txt. El código de muestra es el siguiente:
StreamWriter = new StreamWrite(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
cadena Contenido de archivo;
TxtWriter.Write(Contenido de archivo);
TxtWriter.Close();
Las clases System.IO.Directory y System.DirectoryInfo
proporcionan principalmente varias operaciones en el directorio, y es necesario hacer referencia al espacio de nombres System.IO al usarlas. Sus principales atributos y métodos se presentan a continuación a través de ejemplos de programas.
(1) Método de creación de directorio: Directory.CreateDirectory
Este método se declara de la siguiente manera:
public static DirectoryInfo CreateDirectory(ruta de cadena)
El siguiente código demuestra la creación de un directorio llamado NewDirectory en la carpeta c:tempuploads.
vacío privado MakeDirectory()
{
Directorio.CreateDirectory(@"c:tempuploadsNewDirectoty");
}
(2) Método de configuración de atributos de directorio:
el código siguiente DirectoryInfo.Atttributes establece el directorio c:tempuploadsNewDirectory en solo lectura y oculto. Al igual que los atributos de archivo, los atributos de directorio también se configuran mediante FileAttributes.
SetDirectory vacío privado()
{
DirectoryInfo NewDirInfo = nuevo DirectoryInfo(@"c:tempuploadsNewDirectoty");
NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
}
(3) Método de eliminación de directorio: Directory.Delete
Este método se declara de la siguiente manera:
public static void Delete(ruta de cadena,bool recursivo);
el siguiente código puede eliminar el directorio c:tempuploadsBackUp. El segundo parámetro del método Eliminar es de tipo bool, que puede determinar si se elimina un directorio que no está vacío. Si el valor del parámetro es verdadero, se eliminará todo el directorio, incluso si hay archivos o subdirectorios en el directorio, si es falso, el directorio se eliminará solo si está vacío;
vacío privado EliminarDirectorio()
{
Directorio.Delete(@"c:tempuploadsBackUp",true);
}
(4) Método de movimiento de directorio: Directory.Move
Este método se declara de la siguiente manera:
public static void Move(string sourceDirName, string destDirName)
;
MoveDirectory vacío privado()
{
File.Move(@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
}
subdirectorios
en el directorio actual: Directory.GetDirectories
Este método se declara de la siguiente manera:
public static string[] GetDirectories(string path;);
y guárdelo en una matriz de cadenas.
GetDirectory vacío privado()
{
cadena [] Directorios;
Directorios = Directorio. GetDirectories (@"c:tempuploads");
}
archivos
en el directorio actual: Directory.GetFiles
Este método se declara de la siguiente manera:
public static string[] GetFiles(string path;);
directorio y guárdelo en una matriz de cadenas.
GetFile vacío privado()
{
cadena [] Archivos;
Archivos = Directorio. GetFiles (@"c:tempuploads",);
}
(7) Método para determinar si existe un directorio: Directory.Exist
Este método se declara de la siguiente manera:
public static bool Exists(.
ruta de cadena;
);
El siguiente código determina si existe el directorio c:tempuploadsNewDirectory. Si existe, primero obtenga los subdirectorios y archivos del directorio, luego muévalos y finalmente elimine el directorio movido. Si no existe, primero cree el directorio y luego configure los atributos del directorio como de solo lectura y ocultos.
if(File.Exists(@"c:tempuploadsNewDirectory")) //Determina si el directorio existe
{
GetDirectory(); //Obtener el subdirectorio GetFile(); //Obtener el archivo MoveDirectory() //Mover el directorio DeleteDirectory();
}
demás
{
MakeDirectory(); //Generar directorio SetDirectory(); //Establecer atributos del directorio
}
Nota:
Hay tres formas de especificar una ruta: la ruta relativa en el directorio actual, la ruta relativa en el disco de trabajo actual y la ruta absoluta. Tome C:TmpBook como ejemplo (suponiendo que el directorio de trabajo actual sea C:Tmp). "Libro", "TmpBook", "C:TmpBook" significan C:TmpBook.
Además, "" es un carácter especial en C# y es necesario utilizar "\" para expresarlo. Dado que esta forma de escribir es inconveniente, el lenguaje C# proporciona @ para simplificarla. Simplemente agregue @ delante de la cadena para usar "" directamente. Por lo tanto, la ruta anterior debe expresarse como "Libro", @"TmpBook", @"C:TmpBook" en C#.