「ネットワークハードディスク」機能を設計するには、まず.NETでのファイルやフォルダの処理操作に慣れておく必要があります。ファイル クラスとディレクトリ クラスは、最も重要な 2 つのクラスです。それらを理解すると、その後の機能の実装が大幅に容易になります。
System.IO.File クラスと System.IO.FileInfo クラスは、
「ネットワーク ハードディスク」の設計と実装の過程で、ファイル システムの操作に関連するコンテンツを広範囲に使用します。したがって、このセクションではまず、ファイル システムに関連する 2 つの .NET クラスを簡単に紹介します。
System.IO.File クラスと System.IO.FileInfo クラスは主にファイルに関するさまざまな操作を提供するクラスであり、使用する際には System.IO 名前空間を参照する必要があります。その主な属性とメソッドをプログラム例を通じて以下に紹介します。
(1) ファイルを開くメソッド: File.Open
このメソッドの宣言は次のとおりです。
public static FileStream Open(string path,FileMode mode)
次のコードは、c:tempuploads ディレクトリに格納されている newFile.txt という名前のファイルを開きます。ファイル内 に hello と書き込みます。
private void OpenFile()
{
FileStream.TextFile=File.Open(@"c:tempuploadsnewFile.txt",FileMode.Append);
byte [] 情報 = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
TextFile.Write(情報,0,情報.長さ);
TextFile.Close();
(2) ファイル作成メソッド: File.Create
このメソッドの宣言は次のとおりです:
public static FileStream Create(string path;)
次
のコードは、c:tempuploads に newFile.txt という名前のファイルを作成する方法を示しています。
File.Create メソッドは、デフォルトですべてのユーザーに新しいファイルへの完全な読み取り/書き込みアクセス権を付与するため、ファイルは読み取り/書き込みアクセス権で開かれ、別のアプリケーションで開く前に閉じる必要があります。これを行うには、FileStream クラスの Close メソッドを使用して、作成されたファイルを閉じる必要があります。
private void MakeFile()
{
FileStream NewText=File.Create(@"c:tempuploadsnewFile.txt");
NewText.Close();
public static void Delete(string path);
次のコードは、c:tempuploads ディレクトリ内の newFile.txt ファイルを
削除する
方法を示しています
。
プライベート void DeleteFile()
{
File.Delete(@"c:tempuploadsnewFile.txt");
(4) ファイルコピーメソッド: File.Copy
このメソッドは次のように宣言されます。
public static void Copy(string sourceFileName,stringdestFileName
,bool overwrite);
次のコードは、c:tempuploadsnewFile.txt を c:tempuploads にコピーします。 バックアップ.txt。
Cope メソッドの OverWrite パラメーターが true に設定されているため、BackUp.txt ファイルが既に存在する場合は、コピーされたファイルによって上書きされます。
プライベート void CopyFile()
{
File.Copy(@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
5
) ファイル移動メソッド: File.Move
このメソッドは次のように宣言されます。
public static void Move(string sourceFileName,string destFileName);
次のコードは、c:tempuploads の下にある BackUp.txt ファイルを、次のルート ディレクトリに移動します。ドライブc。
注:
ファイル転送は、同じ論理ディスク内でのみ実行できます。 cドライブからdドライブにファイルを転送しようとするとエラーが発生します。
private void MoveFile()
{
File.Move(@"c:tempuploadsBackUp.txt",@"c:BackUp.txt");
(6) ファイル属性の設定メソッド: File.SetAttributes
このメソッドは次のように宣言されます:
public static void SetAttributes(stringpath
,FileAttributes fileAttributes);
次のコードは、ファイル c:tempuploadsnewFile.txt の属性を次のように設定します。読み取り専用または非表示。
プライベート void SetFile()
{
File.SetAttributes(@"c:tempuploadsnewFile.txt",
FileAttributes.ReadOnly|FileAttributes.Hidden);
、
一般的に使用される読み取り専用属性と非表示属性に加えて、Archive (ファイル アーカイブ ステータス)、System (システム ファイル)、Temporary (一時ファイル) などもあります。ファイル属性の詳細については、MSDN の FileAttributes の説明を参照してください。
(7) ファイルが存在するかどうかを判定するメソッド: File.Exist
このメソッドは次のように宣言されます:
public static bool Exists(string path);
次のコードは、c:tempuploadsnewFile.txt ファイルが存在するかどうかを判定します。ファイルが存在する場合は、最初にファイルをコピーしてから削除し、最後にコピーしたファイルを移動します。ファイルが存在しない場合は、最初にファイルを作成し、次にファイルを開いて書き込み操作を実行し、最後にファイル属性を読み取り専用に設定します。そして隠れた。
if(File.Exists(@"c:tempuploadsnewFile.txt")) //ファイルが存在するかどうかを判断します
{
CopyFile(); //ファイルをコピーしますDeleteFile() //ファイルを削除しますMoveFile();
}
それ以外
{
MakeFile(); //ファイルを生成 OpenFile(); //ファイル属性を設定
、
File クラスは Text テキストのサポートをさらに提供します。
· AppendText: 既存のファイルにテキストを追加します
· CreateText: テキストを書き込むために新しいファイルを作成するか開きます
· OpenText: 読み取りのために既存のテキスト ファイルを開きます
ただし、上記のメソッドは主に UTF-8 でエンコードされたテキストに対して動作するため、柔軟性が十分ではないように見えます。読者は次のコードを使用して txt ファイルを操作することをお勧めします。
· txt ファイルに対して「読み取り」操作を実行します。サンプル コードは次のとおりです。
StreamReader TxtReader = new StreamReader(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
文字列ファイルコンテンツ;
FileContent = TxtReader.ReadEnd();
TxtReader.Close();
を
実行します。 サンプル コードは次のとおりです。
文字列ファイルコンテンツ;
TxtWriter.Write(FileContent);
TxtWriter.Close();
System.IO.Directory クラスと System.DirectoryInfo クラスは
主にディレクトリに対するさまざまな操作を提供しており、使用する際には System.IO 名前空間を参照する必要があります。その主な属性とメソッドをプログラム例を通じて以下に紹介します。
(1) ディレクトリ作成メソッド: Directory.CreateDirectory
このメソッドは次のように宣言されます:
public static DirectoryInfo CreateDirectory(string path);
次のコードは、c:tempuploads フォルダーに NewDirectory という名前のディレクトリを作成する例を示します。
プライベート void MakeDirectory()
{
Directory.CreateDirectory(@"c:tempuploadsNewDirectoty");
2
) ディレクトリ属性の設定方法:
DirectoryInfo.Atttributes 以下のコードは、c:tempuploadsNewDirectory ディレクトリを読み取り専用かつ非表示に設定します。ファイル属性と同様に、ディレクトリ属性も FileAttributes を使用して設定されます。
プライベート void SetDirectory()
{
DirectoryInfo NewDirInfo = new DirectoryInfo(@"c:tempuploadsNewDirectoty");
NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
public static void Delete(string path,bool recursive);
以下
のコードにより、
c
:tempuploadsBackUp ディレクトリを削除できます。 Delete メソッドの 2 番目のパラメーターは bool 型で、空ではないディレクトリを削除するかどうかを決定できます。パラメータ値が true の場合、ディレクトリ内にファイルまたはサブディレクトリがあってもディレクトリ全体が削除されます。 false の場合、ディレクトリは空の場合にのみ削除されます。
プライベート void DeleteDirectory()
{
Directory.Delete(@"c:tempuploadsBackUp",true);
public static void Move(string sourceDirName, string destDirName);
次
のコードは、
ディレクトリ c:tempuploadsNewDirectory を c:tempuploadsBackUp に移動します
。
プライベート void MoveDirectory()
{
File.Move(@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
(5) 現在のディレクトリ内のすべてのサブディレクトリを取得します: Directory.GetDirectories
このメソッドは次のように宣言されます:
public static string[] GetDirectories(string path;);
次
のコードは、 c:tempuploads ディレクトリ内のすべてのサブディレクトリを読み取ります。そしてそれを文字列配列に格納します。
プライベート void GetDirectory()
{
文字列 [] ディレクトリ;
ディレクトリ = GetDirectories (@"c:tempuploads");
(6) 現在のディレクトリ内のすべてのファイルを取得するメソッド: Directory.GetFiles
このメソッドは次のように宣言されます。
public static string[] GetFiles(string path;
);
次のコードは、c:tempuploads にあるすべてのファイルを読み取ります。 ディレクトリに格納し、それを文字列配列に格納します。
プライベート void GetFile()
{
文字列 [] ファイル;
ファイル = ディレクトリ。
(7) ディレクトリが存在するかどうかを判定するメソッド: Directory.Exist
この
メソッドは次のように宣言されます:
public static bool Exists(
文字列パス;
);
次のコードは、c:tempuploadsNewDirectory ディレクトリが存在するかどうかを判断します。存在する場合は、まずディレクトリ内のサブディレクトリとファイルを取得し、次にそれらを移動し、最後に移動したディレクトリを削除します。存在しない場合は、最初にディレクトリを作成し、次にディレクトリ属性を読み取り専用および非表示に設定します。
if(File.Exists(@"c:tempuploadsNewDirectory")) //ディレクトリが存在するかどうかを判断します
{
GetDirectory(); // サブディレクトリを取得します GetFile() // ファイルを取得します MoveDirectory(); // ディレクトリを削除します
}
それ以外
{
MakeDirectory(); // ディレクトリを生成 SetDirectory(); // ディレクトリ属性を設定
注
:
パスを指定するには、現在のディレクトリ内の相対パス、現在の作業ディスク内の相対パス、および絶対パスの 3 つの方法があります。 C:TmpBook を例に挙げます (現在の作業ディレクトリが C:Tmp であると仮定します)。 「Book」、「TmpBook」、「C:TmpBook」はすべて C:TmpBook を意味します。
また、「」は C# の特殊文字であるため、「\」を使用して表現する必要があります。この書き方では不便なので、C#言語では@を用意して簡略化しています。 「」を直接使用するには、文字列の前に @ を追加するだけです。したがって、上記のパスは C# では "Book", @"TmpBook", @"C:TmpBook" と表現する必要があります。