Um die Funktion „Netzwerkfestplatte“ zu entwerfen, müssen Sie zunächst mit den Vorgängen zur Verarbeitung von Dateien und Ordnern in .NET vertraut sein. Die Dateiklasse und die Verzeichnisklasse sind die beiden wichtigsten Klassen. Ihr Verständnis wird die Implementierung nachfolgender Funktionen erheblich erleichtern.
Die System.IO.File-Klasse und die System.IO.FileInfo-Klasse
werden beim Entwurf und der Implementierung der „Netzwerkfestplatte“ in großem Umfang Inhalte im Zusammenhang mit Dateisystemvorgängen nutzen. Daher werden in diesem Abschnitt zunächst kurz die beiden .NET-Klassen vorgestellt, die sich auf das Dateisystem beziehen.
Die System.IO.File-Klasse und die System.IO.FileInfo-Klasse stellen hauptsächlich verschiedene Vorgänge im Zusammenhang mit Dateien bereit, und Sie müssen bei ihrer Verwendung auf den System.IO-Namespace verweisen. Seine Hauptattribute und Methoden werden im Folgenden anhand von Programmbeispielen vorgestellt.
(1) Dateiöffnungsmethode: File.Open
Die Deklaration dieser Methode lautet wie folgt:
public static FileStream Open(string path,FileMode mode)
Der folgende Code öffnet die Datei mit dem Namen newFile.txt, die im Verzeichnis c:tempuploads gespeichert ist, und in die Datei schreiben Sie Hallo in .
private void OpenFile()
{
FileStream.TextFile=File.Open(@"c:tempuploadsnewFile.txt",FileMode.Append);
byte [] Info = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
TextFile.Write(Info,0,Info.Length);
TextFile.Close();
}
(2) Dateierstellungsmethode: File.Create
Die Deklaration dieser Methode lautet wie folgt:
public static FileStream Create(string path;)
Der folgende Code zeigt, wie eine Datei mit dem Namen newFile.txt unter c:tempuploads erstellt wird.
Da die File.Create-Methode standardmäßig allen Benutzern vollständigen Lese-/Schreibzugriff auf neue Dateien gewährt, wird die Datei mit Lese-/Schreibzugriff geöffnet und muss geschlossen werden, bevor sie von einer anderen Anwendung geöffnet werden kann. Dazu müssen Sie die Close-Methode der FileStream-Klasse verwenden, um die erstellte Datei zu schließen.
private void MakeFile()
{
FileStream NewText=File.Create(@"c:tempuploadsnewFile.txt");
NewText.Close();
}
(3) Methode zum Löschen von Dateien: File.Delete
Diese Methode wird wie folgt deklariert:
public static void Delete(string path);
Der folgende Code zeigt, wie die Datei newFile.txt im Verzeichnis c:tempuploads gelöscht wird.
private void DeleteFile()
{
File.Delete(@"c:tempuploadsnewFile.txt");
}
(4) Methode zum Kopieren von Dateien: File.Copy
Diese Methode wird wie folgt deklariert:
public static void Copy(string sourceFileName,string destFileName,bool overwrite);
Der folgende Code kopiert c:tempuploadsnewFile.txt nach c:tempuploads BackUp.txt.
Da der OverWrite-Parameter der Cope-Methode auf „true“ gesetzt ist, wird die Datei „BackUp.txt“ von der kopierten Datei überschrieben, wenn sie bereits vorhanden ist.
private void CopyFile()
{
File.Copy(@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
}
(5) Methode zum Verschieben von Dateien: File.Move
Diese Methode wird wie folgt deklariert:
public static void Move(string sourceFileName,string destFileName);
Der folgende Code kann die Datei BackUp.txt unter c:tempuploads in das Stammverzeichnis von verschieben Laufwerk c.
Hinweis:
Die Dateiübertragung kann nur unter demselben logischen Datenträger erfolgen. Wenn Sie versuchen, Dateien vom Laufwerk C auf das Laufwerk D zu übertragen, tritt ein Fehler auf.
private void MoveFile()
{
File.Move(@"c:tempuploadsBackUp.txt",@"c:BackUp.txt");
}
(6) Methode zum Festlegen von Dateiattributen: File.SetAttributes
Diese Methode wird wie folgt deklariert:
public static void SetAttributes(string path,FileAttributes fileAttributes);
Der folgende Code kann die Attribute der Datei c:tempuploadsnewFile.txt festlegen schreibgeschützt oder ausgeblendet.
private void SetFile()
{
File.SetAttributes(@"c:tempuploadsnewFile.txt",
FileAttributes.ReadOnly|FileAttributes.Hidden);
}
Zusätzlich zu den häufig verwendeten schreibgeschützten und versteckten Attributen verfügen Dateien auch über „Archiv“ (Dateiarchivstatus), „System“ (Systemdateien), „Temporär“ (temporäre Dateien) usw. Einzelheiten zu Dateiattributen finden Sie in der Beschreibung von FileAttributes in MSDN.
(7) Methode zum Ermitteln, ob eine Datei vorhanden ist: File.Exist
Diese Methode wird wie folgt deklariert:
public static bool Exists(string path);
Der folgende Code bestimmt, ob die Datei c:tempuploadsnewFile.txt vorhanden ist. Wenn sie vorhanden ist, kopieren Sie zuerst die Datei, löschen Sie sie dann und verschieben Sie sie schließlich. Wenn sie nicht vorhanden ist, erstellen Sie zuerst die Datei, öffnen Sie die Datei, führen Sie Schreibvorgänge aus und setzen Sie schließlich die Dateiattribute auf schreibgeschützt und versteckt.
if(File.Exists(@"c:tempuploadsnewFile.txt")) //Bestimmen Sie, ob die Datei vorhanden ist
{
CopyFile(); //Datei kopierenDeleteFile(); //Datei löschenMoveFile();
}
anders
{
MakeFile(); //Datei generieren OpenFile(); //Datei öffnen SetFile(); //Dateiattribute festlegen
}
Darüber hinaus bietet die File-Klasse mehr Unterstützung für Texttext.
· AppendText: Text an eine vorhandene Datei anhängen
· CreateText: Eine neue Datei zum Schreiben von Text erstellen oder öffnen
· OpenText: Eine vorhandene Textdatei zum Lesen öffnen
Die obige Methode funktioniert jedoch hauptsächlich mit UTF-8-codiertem Text und erscheint daher nicht flexibel genug. Es wird empfohlen, dass Leser den folgenden Code verwenden, um TXT-Dateien zu bedienen.
· Führen Sie den Lesevorgang für TXT-Dateien durch. Der Beispielcode lautet wie folgt:
StreamReader TxtReader = new StreamReader(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
string FileContent;
FileContent = TxtReader.ReadEnd();
TxtReader.Close();
· Führen Sie den „Schreibvorgang“ für die TXT-Datei aus. Der Beispielcode lautet wie folgt:
StreamWriter = new StreamWrite(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
string FileContent;
TxtWriter.Write(FileContent);
TxtWriter.Close();
Die System.IO.Directory-Klasse und die System.DirectoryInfo-Klasse
stellen hauptsächlich verschiedene Vorgänge für das Verzeichnis bereit, und Sie müssen bei ihrer Verwendung auf den System.IO-Namespace verweisen. Seine Hauptattribute und Methoden werden im Folgenden anhand von Programmbeispielen vorgestellt.
(1) Verzeichniserstellungsmethode: Directory.CreateDirectory
Diese Methode wird wie folgt deklariert:
public static DirectoryInfo CreateDirectory(string path);
Der folgende Code veranschaulicht die Erstellung eines Verzeichnisses mit dem Namen NewDirectory im Ordner c:tempuploads.
private void MakeDirectory()
{
Directory.CreateDirectory(@"c:tempuploadsNewDirectoty");
}
(2) Methode zum Festlegen von Verzeichnisattributen:
Der Code unter DirectoryInfo.Atttributes legt das Verzeichnis c:tempuploadsNewDirectory auf schreibgeschützt und ausgeblendet fest. Wie Dateiattribute werden auch Verzeichnisattribute mithilfe von FileAttributes festgelegt.
private void SetDirectory()
{
DirectoryInfo NewDirInfo = new DirectoryInfo(@"c:tempuploadsNewDirectoty");
NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
}
(3) Methode zum Löschen von Verzeichnissen: Directory.Delete
Diese Methode wird wie folgt deklariert:
public static void Delete(string path,bool recursive);
Der folgende Code kann das Verzeichnis c:tempuploadsBackUp löschen. Der zweite Parameter der Methode „Delete“ ist vom Typ bool und kann bestimmen, ob ein nicht leeres Verzeichnis gelöscht werden soll. Wenn der Parameterwert „true“ ist, wird das gesamte Verzeichnis gelöscht, auch wenn sich Dateien oder Unterverzeichnisse im Verzeichnis befinden. Wenn er „false“ ist, wird das Verzeichnis nur gelöscht, wenn es leer ist.
private void DeleteDirectory()
{
Directory.Delete(@"c:tempuploadsBackUp",true);
}
(4) Verzeichnisverschiebungsmethode: Directory.Move
Diese Methode wird wie folgt deklariert:
public static void Move(string sourceDirName, string destDirName);
Der folgende Code verschiebt das Verzeichnis c:tempuploadsNewDirectory nach c:tempuploadsBackUp.
private void MoveDirectory()
{
File.Move(@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
}
(5) Alle Unterverzeichnisse im aktuellen Verzeichnis abrufen: Directory.GetDirectories
Diese Methode wird wie folgt deklariert:
public static string[] GetDirectories(string path;);
Der folgende Code liest alle Unterverzeichnisse im Verzeichnis c:tempuploads aus. und speichern Sie es in einem String-Array.
private void GetDirectory()
{
string [] Verzeichnisse;
Verzeichnisse = Verzeichnis. GetDirectories (@"c:tempuploads");
}
(6) Methode zum Abrufen aller Dateien im aktuellen Verzeichnis: Directory.GetFiles
Diese Methode wird wie folgt deklariert:
public static string[] GetFiles(string path;);
Der folgende Code liest alle Dateien in c:tempuploads aus -Verzeichnis und speichern Sie es in einem String-Array.
private void GetFile()
{
string [] Dateien;
Dateien = Verzeichnis. GetFiles (@"c:tempuploads",);
}
(7) Methode zum Ermitteln, ob ein Verzeichnis vorhanden ist: Directory.Exist
Diese Methode wird wie folgt deklariert:
public static bool Exists(
String-Pfad;
);
Der folgende Code bestimmt, ob das Verzeichnis c:tempuploadsNewDirectory vorhanden ist. Wenn es vorhanden ist, rufen Sie zuerst die Unterverzeichnisse und Dateien im Verzeichnis ab, verschieben Sie sie dann und löschen Sie schließlich das verschobene Verzeichnis. Wenn es nicht vorhanden ist, erstellen Sie zuerst das Verzeichnis und setzen Sie dann die Verzeichnisattribute auf schreibgeschützt und ausgeblendet.
if(File.Exists(@"c:tempuploadsNewDirectory")) //Bestimmen Sie, ob das Verzeichnis existiert
{
GetDirectory(); //Das Unterverzeichnis abrufen. GetFile(); //Das Verzeichnis verschieben
}
anders
{
MakeDirectory(); //Verzeichnis generieren SetDirectory(); //Verzeichnisattribute festlegen
}
Hinweis:
Es gibt drei Möglichkeiten, einen Pfad anzugeben: den relativen Pfad im aktuellen Verzeichnis, den relativen Pfad auf der aktuellen Arbeitsplatte und den absoluten Pfad. Nehmen Sie als Beispiel C:TmpBook (vorausgesetzt, das aktuelle Arbeitsverzeichnis ist C:Tmp). „Book“, „TmpBook“, „C:TmpBook“ bedeuten alle C:TmpBook.
Darüber hinaus ist „“ ein Sonderzeichen in C# und Sie müssen „\“ verwenden, um es auszudrücken. Da diese Schreibweise unpraktisch ist, stellt die C#-Sprache @ zur Vereinfachung bereit. Fügen Sie einfach @ vor der Zeichenfolge hinzu, um „“ direkt zu verwenden. Daher sollte der obige Pfad in C# als „Book“, @“TmpBook“, @“C:TmpBook“ ausgedrückt werden.