Pour concevoir la fonction « disque dur réseau », vous devez d'abord être familiarisé avec les opérations de traitement des fichiers et dossiers dans .NET. La classe File et la classe Directory sont les deux classes les plus importantes. Les comprendre facilitera grandement la mise en œuvre des fonctions ultérieures.
Les classes System.IO.File et System.IO.FileInfo
utiliseront largement le contenu lié aux opérations du système de fichiers dans le processus de conception et de mise en œuvre du « disque dur réseau ». Par conséquent, cette section présente d’abord brièvement les deux classes .NET liées au système de fichiers.
Les classes System.IO.File et System.IO.FileInfo fournissent principalement diverses opérations liées aux fichiers, et vous devez référencer l'espace de noms System.IO lorsque vous les utilisez. Ses principaux attributs et méthodes sont présentés ci-dessous à travers des exemples de programmes.
(1) Méthode d'ouverture de fichier : File.Open
La déclaration de cette méthode est la suivante :
public static FileStream Open(string path,FileMode mode)
Le code suivant ouvre le fichier nommé newFile.txt stocké dans le répertoire c:tempuploads, et dans le fichier Écrivez bonjour dans .
privé vide OpenFile()
{
FileStream.TextFile=File.Open (@"c:tempuploadsnewFile.txt",FileMode.Append);
octet [] Info = {(octet)'h',(octet)'e',(octet)'l',(octet)'l',(octet)'o'};
TextFile.Write(Info,0,Info.Length);
TextFile.Close();
}
(2) Méthode de création de fichier : File.Create
La déclaration de cette méthode est la suivante :
public static FileStream Create(string path;)
Le code suivant montre comment créer un fichier nommé newFile.txt sous c:tempuploads.
Étant donné que la méthode File.Create accorde par défaut un accès complet en lecture/écriture aux nouveaux fichiers à tous les utilisateurs, le fichier est ouvert avec un accès en lecture/écriture et doit être fermé avant de pouvoir être ouvert par une autre application. Pour ce faire, vous devez utiliser la méthode Close de la classe FileStream pour fermer le fichier créé.
privé vide MakeFile()
{
FileStream NewText=File.Create (@"c:tempuploadsnewFile.txt");
NewText.Close();
}
(3) Méthode de suppression de fichier : File.Delete
Cette méthode est déclarée comme suit :
public static void Delete(string path);
Le code suivant montre comment supprimer le fichier newFile.txt dans le répertoire c:tempuploads.
privé vide SupprimerFile()
{
Fichier.Delete (@"c:tempuploadsnewFile.txt");
}
(4) Méthode de copie de fichier : File.Copy
Cette méthode est déclarée comme suit :
public static void Copy(string sourceFileName,string destFileName,bool overwrite
Le code suivant copie c:tempuploadsnewFile.txt dans c:tempuploads) ; Sauvegarde.txt.
Le paramètre OverWrite de la méthode Cope étant défini sur true, si le fichier BackUp.txt existe déjà, il sera écrasé par le fichier copié.
privé vide CopyFile()
{
File.Copy (@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
}
(5) Méthode de déplacement de fichier : File.Move
Cette méthode est déclarée comme suit :
public static void Move(string sourceFileName,string destFileName)
Le code suivant peut déplacer le fichier BackUp.txt sous c:tempuploads vers le répertoire racine de conduire c.
Remarque :
Le transfert de fichiers ne peut être effectué que sous le même disque logique. Si vous essayez de transférer des fichiers du lecteur c vers le lecteur d, une erreur se produira.
privé vide MoveFile()
{
File.Move (@"c:tempuploadsBackUp.txt",@"c:BackUp.txt");
}
(6) Méthode de définition des attributs du fichier : File.SetAttributes
Cette méthode est déclarée comme suit :
public static void SetAttributes(string path,FileAttributes fileAttributes);
Le code suivant peut définir les attributs du fichier c:tempuploadsnewFile.txt sur en lecture seule ou masqué.
privé vide SetFile()
{
Fichier.SetAttributes (@"c:tempuploadsnewFile.txt",
FileAttributes.ReadOnly|FileAttributes.Hidden);
}
En plus des attributs en lecture seule et masqués couramment utilisés, les fichiers ont également Archive (état de l'archive du fichier), Système (fichiers système), Temporaire (fichiers temporaires), etc. Pour plus de détails sur les attributs de fichier, veuillez vous référer à la description de FileAttributes dans MSDN.
(7) Méthode pour déterminer si un fichier existe : File.Exist
Cette méthode est déclarée comme suit :
public static bool Exists(string path);
Le code suivant détermine si le fichier c:tempuploadsnewFile.txt existe. S'il existe, copiez d'abord le fichier, puis supprimez-le, et enfin déplacez le fichier copié ; s'il n'existe pas, créez d'abord le fichier, puis ouvrez le fichier et effectuez les opérations d'écriture, et enfin définissez les attributs du fichier en lecture seule ; et caché.
if(File.Exists (@"c:tempuploadsnewFile.txt")) //Détermine si le fichier existe
{
CopyFile(); //Copier le fichierDeleteFile(); //Supprimer le fichierMoveFile( //Déplacer le fichier);
}
autre
{
MakeFile(); //Générer le fichier OpenFile(); //Ouvrir le fichier SetFile(); //Définir les attributs du fichier
}
De plus, la classe File offre davantage de prise en charge du texte Text.
· AppendText : ajouter du texte à un fichier existant
· CreateText : créer ou ouvrir un nouveau fichier pour écrire du texte
· OpenText : ouvrir un fichier texte existant pour la lecture
Mais la méthode ci-dessus fonctionne principalement sur du texte codé en UTF-8, apparaissant ainsi pas assez flexible. Il est recommandé aux lecteurs d'utiliser le code suivant pour exploiter les fichiers txt.
· Effectuez une opération de « lecture » sur les fichiers txt. L'exemple de code est le suivant :
StreamReader TxtReader = new StreamReader (@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
chaîne FileContent ;
FileContent = TxtReader.ReadEnd();
TxtReader.Close();
· Effectuer une opération « écriture » sur le fichier txt. L'exemple de code est le suivant :
StreamWriter = new StreamWrite (@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
chaîne FileContent ;
TxtWriter.Write(FileContent);
TxtWriter.Close();
Les classes System.IO.Directory et System.DirectoryInfo
fournissent principalement diverses opérations sur le répertoire, et vous devez référencer l'espace de noms System.IO lorsque vous les utilisez. Ses principaux attributs et méthodes sont présentés ci-dessous à travers des exemples de programmes.
(1) Méthode de création de répertoire : Directory.CreateDirectory
Cette méthode est déclarée comme suit :
public static DirectoryInfo CreateDirectory(string path);
Le code suivant illustre la création d'un répertoire nommé NewDirectory dans le dossier c:tempuploads.
privé vide MakeDirectory()
{
Directory.CreateDirectory (@"c:tempuploadsNewDirectoty");
}
(2) Méthode de définition des attributs d'annuaire :
le code ci-dessous DirectoryInfo.Attributes définit le répertoire c:tempuploadsNewDirectory en lecture seule et masqué. Comme les attributs de fichier, les attributs de répertoire sont également définis à l'aide de FileAttributes.
privé vide SetDirectory()
{
DirectoryInfo NewDirInfo = new DirectoryInfo (@"c:tempuploadsNewDirectoty");
NewDirInfo.Attributes = FileAttributes.ReadOnly|FileAttributes.Hidden ;
}
(3) Méthode de suppression de répertoire : Directory.Delete
Cette méthode est déclarée comme suit :
public static void Delete(string path,bool recursive);
Le code suivant peut supprimer le répertoire c:tempuploadsBackUp. Le deuxième paramètre de la méthode Delete est de type bool, qui permet de déterminer s'il faut supprimer un répertoire non vide. Si la valeur du paramètre est vraie, tout le répertoire sera supprimé, même s'il y a des fichiers ou des sous-répertoires dans le répertoire ; si elle est fausse, le répertoire ne sera supprimé que s'il est vide ;
privé vide SupprimerDirectory()
{
Directory.Delete (@"c:tempuploadsBackUp",true);
}
(4) Méthode de déplacement de répertoire : Directory.Move
Cette méthode est déclarée comme suit :
public static void Move(string sourceDirName, string destDirName);
Le code suivant déplace le répertoire c:tempuploadsNewDirectory vers c:tempuploadsBackUp.
privé vide MoveDirectory()
{
File.Move (@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
}
(5) Récupère tous les sous-répertoires du répertoire actuel : Directory.GetDirectories
Cette méthode est déclarée comme suit :
public static string[] GetDirectories(string path;);
Le code suivant lit tous les sous-répertoires du répertoire c:tempuploads, et stockez-le dans un tableau de chaînes.
vide privé GetDirectory()
{
chaîne [] Répertoires ;
Répertoires = Répertoire GetDirectories (@"c:tempuploads");
}
fichiers
du répertoire courant : Directory.GetFiles
Cette méthode est déclarée comme suit :
public static string[] GetFiles(string path;);
et stockez-le dans un tableau de chaînes.
vide privé GetFile()
{
chaîne [] Fichiers ;
Fichiers = Répertoire. GetFiles (@"c:tempuploads",);
}
(7) Méthode pour déterminer si un répertoire existe : Directory.Exist
Cette méthode est déclarée comme suit :
public static bool Exists(.
chemin de chaîne ;
);
Le code suivant détermine si le répertoire c:tempuploadsNewDirectory existe. S'il existe, récupérez d'abord les sous-répertoires et fichiers du répertoire, puis déplacez-les et enfin supprimez le répertoire déplacé. S'il n'existe pas, créez d'abord le répertoire, puis définissez les attributs du répertoire en lecture seule et masqués.
if(File.Exists (@"c:tempuploadsNewDirectory")) //Détermine si le répertoire existe
{
GetDirectory(); //Récupère le sous-répertoire GetFile(); //Récupère le fichier MoveDirectory(); //Déplace le répertoire DeleteDirectory();
}
autre
{
MakeDirectory(); //Générer le répertoire SetDirectory(); //Définir les attributs du répertoire
}
Remarque :
Il existe trois manières de spécifier un chemin : le chemin relatif dans le répertoire actuel, le chemin relatif dans le disque de travail actuel et le chemin absolu. Prenons C:TmpBook comme exemple (en supposant que le répertoire de travail actuel est C:Tmp). "Book", "TmpBook", "C:TmpBook" signifient tous C:TmpBook.
De plus, "" est un caractère spécial en C# et vous devez utiliser "\" pour l'exprimer. Cette façon d'écrire n'étant pas pratique, le langage C# fournit @ pour le simplifier. Ajoutez simplement @ devant la chaîne pour utiliser directement "". Le chemin ci-dessus doit donc être exprimé sous la forme "Book", @"TmpBook", @"C:TmpBook" en C#.