ASP.NETはネットハードディスクの2つの重要なクラスのコードを設計します

8229 ワード

System.IO.FileクラスとSystem.IO.FileInfoクラス
「ネットワークハードディスク(HDD)」の設計と実装では、ファイルシステムの操作に関連するコンテンツが大量に使用されます.この節では、まずファイルシステムに関する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:\tempuploads
ewFile.txt",FileMode.Append);
 byte [] Info = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
 TextFile.Write(Info,0,Info.Length);
 TextFile.Close();
}

(2)ファイル作成方法:File.Create
このメソッドの宣言は次のとおりです.
public static FileStream Create(string path;)
次のコードは、c:tempuploadsの下でnewFileという名前を作成する方法を示しています.txtのファイル.
なぜならCreateメソッドでは、デフォルトですべてのユーザーに新しいファイルへの完全な読み取り/書き込みアクセス権が付与されます.したがって、ファイルは読み取り/書き込みアクセス権で開かれます.他のアプリケーションで開くには、閉じる必要があります.そのためには、FileStreamクラスのCloseメソッドを使用して作成したファイルを閉じる必要があります.
 
  
private void MakeFile()
{
 FileStream NewText=File.Create(@"c:\tempuploads
ewFile.txt");
 NewText.Close();
}

(3)ファイル削除方法:File.Delete
メソッドは次のように宣言されます.
public static void Delete(string path);
次のコードは、c:tempuploadsディレクトリのnewFileを削除する方法を示しています.txtファイル.
 
  
private void DeleteFile()
{
 File.Delete(@"c:\tempuploads
ewFile.txt");
}

(4)ファイルコピー方法:File.Copy
メソッドは次のように宣言されます.
public static void Copy(string sourceFileName,string destFileName,bool overwrite);
次のコードはc:tempuploadsewFile.txtはc:tempuploadsBackUpにコピーします.txt.
CopeメソッドのOverWriteパラメータをtrueとするので、BackUp.txtファイルが既に存在すると、コピーされた過去のファイルに上書きされます.
 
  
private void CopyFile()
{
 File.Copy(@"c:\tempuploads
ewFile.txt",@"c:\tempuploads\BackUp.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:\tempuploads\BackUp.txt",@"c:\BackUp.txt");
}

(6)ファイル属性の設定方法:File.SetAttributes
メソッドは次のように宣言されます.
public static void SetAttributes(string path,FileAttributes fileAttributes);
次のコードはファイルc:tempuploadsewFileを設定できます.txtのプロパティは読み取り専用、非表示です.
 
  
private void SetFile()
{
 File.SetAttributes(@"c:\tempuploads
ewFile.txt",
 FileAttributes.ReadOnly|FileAttributes.Hidden);
}

ファイルには、通常の読み取り専用と非表示のほか、Archive(ファイルアーカイブ状態)、System(システムファイル)、Temporary(テンポラリファイル)などがあります.ファイルのプロパティの詳細については、MSDNのFileAttributesの説明を参照してください.
(7)ファイルが存在するか否かを判断する方法:File.Exist
メソッドは次のように宣言されます.
public static bool Exists(string path);
次のコードはc:tempuploadsewFileが存在するかどうかを判断します.txtファイル.存在する場合は、ファイルをコピーしてから削除し、最後にコピーしたファイルを移動します.存在しない場合は、ファイルを作成してからファイルを開き、書き込み操作を行い、最後にファイルプロパティを読み取り専用、非表示にします.
 
  
if(File.Exists(@"c:\tempuploads
ewFile.txt")) //
{
 CopyFile(); //
 DeleteFile(); //
 MoveFile(); //
}
else
{
 MakeFile(); //
 OpenFile(); //
 SetFile(); //
}

さらに、FileクラスはTextテキストに対してより多くのサポートを提供しています.
・AppendText:既存ファイルにテキストを追加
・CreateText:書き込み用に新しいファイルを作成または開く
・OpenText:既存のテキストファイルを開いて読み込む
しかし、上記の方法は主にUTF-8の符号化テキストを操作し、柔軟性が足りないように見える.ここでは、txtファイルを次のコードで操作することをお勧めします.
・txtファイルの「読み取り」操作を行い、サンプルコードは以下の通りである.
 
  
StreamReader TxtReader = new StreamReader(@"c:\tempuploads
ewFile.txt",System.Text.Encoding.Default);
string FileContent;
FileContent = TxtReader.ReadEnd();
TxtReader.Close();

・txtファイルに対して「書く」操作を行い、サンプルコードは以下の通りである.
 
  
StreamWriter = new StreamWrite(@"c:\tempuploads
ewFile.txt",System.Text.Encoding.Default);
string FileContent;
TxtWriter.Write(FileContent);
TxtWriter.Close();

  System.IO.DirectoryクラスとSystem.Directory Infoクラス
主にディレクトリに関する各種の操作を提供し、使用時にSystemを参照する必要がある.IOネーミングスペース.次に、プログラムの例を用いて、その主な属性と方法を説明します.
(1)ディレクトリ作成方法:Directory.CreateDirectory
メソッドは次のように宣言されます.
public static DirectoryInfo CreateDirectory(string path);
次のコードは、c:tempuploadsフォルダの下にNewDirectoryというディレクトリを作成する方法を示しています.
 
  
private void MakeDirectory()
{
 Directory.CreateDirectory(@"c:\tempuploads\NewDirectoty");
}

(2)ディレクトリ属性の設定方法:Directory Info.Atttributes
次のコードはc:tempuploadsNewDirectoryディレクトリを読み取り専用、非表示に設定します.ファイルのプロパティと同様に、ディレクトリのプロパティもFileAttributesを使用して設定されます.
 
  
private void SetDirectory()
{
 DirectoryInfo NewDirInfo = new DirectoryInfo(@"c:\tempuploads\NewDirectoty");
 NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
}

(3)ディレクトリ削除方法:Directory.Delete
メソッドは次のように宣言されます.
public static void Delete(string path,bool recursive);
次のコードは、c:tempuploadsBackUpディレクトリを削除できます.Deleteメソッドの2番目のパラメータはboolタイプで、空でないディレクトリを削除するかどうかを決定できます.パラメータ値がtrueの場合、ディレクトリの下にファイルまたはサブディレクトリがある場合でも、ディレクトリ全体が削除されます.falseの場合、ディレクトリが空の場合にのみ削除できます.
 
  
private void DeleteDirectory()
{
 Directory.Delete(@"c:\tempuploads\BackUp",true);
}

(4)ディレクトリ移動方法:Directory.Move
メソッドは次のように宣言されます.
public static void Move(string sourceDirName,string destDirName);
次のコードは、ディレクトリc:tempuploadsNewDirectoryをc:tempuploadsBackUpに移動します.
 
  
private void MoveDirectory()
{
 File.Move(@"c:\tempuploads\NewDirectory",@"c:\tempuploads\BackUp");
}

(5)現在のディレクトリの下にあるすべてのサブディレクトリを取得する方法:Directory.GetDirectories
メソッドは次のように宣言されます.
public static string[] GetDirectories(string path;);
次のコードは、c:tempuploadsディレクトリの下にあるすべてのサブディレクトリを読み出し、文字列配列に格納します.
 
  
private void GetDirectory()
{
 string [] Directorys;
 Directorys = Directory. GetDirectories (@"c:\tempuploads");
}

(6)現在のディレクトリのすべてのファイルを取得する方法:Directory.GetFiles
メソッドは次のように宣言されます.
public static string[] GetFiles(string path;);
次のコードは、c:tempuploadsディレクトリの下にあるすべてのファイルを読み出し、文字列配列に格納します.
 
  
private void GetFile()
{
 string [] Files;
 Files = Directory. GetFiles (@"c:\tempuploads",);
}

(7)ディレクトリが存在するか否かを判断する方法:Directory.Exist
メソッドは次のように宣言されます.
 
  
public static bool Exists(
 string path;
);

次のコードは、c:tempuploadsNewDirectoryディレクトリが存在するかどうかを判断します.存在する場合は、ディレクトリの下にあるサブディレクトリとファイルを取得して移動し、最後に移動したディレクトリを削除します.存在しない場合は、ディレクトリを作成してから、ディレクトリのプロパティを読み取り専用、非表示にします.
 
  
if(File.Exists(@"c:\tempuploads\NewDirectory")) //
{
 GetDirectory(); //
 GetFile(); //
 MoveDirectory(); //
 DeleteDirectory(); //
}
else
{
 MakeDirectory(); //
 SetDirectory(); //
}

注意:
パスには、現在のディレクトリの下の相対パス、現在のワークディスクの相対パス、絶対パスの3つの方法があります.C:TmpBookを例にとります(現在の作業ディレクトリをC:Tmpと仮定します).「Book」、「TmpBook」、「C:TmpBook」はC:TmpBookを表します.
また、C#では「」は特殊文字であり、それを表すには「」が必要です.この書き方が不便なため、C#言語は@を簡略化した.文字列の前に@を付けるだけで「」を直接使用できます.だから上のパスはC#の中で「Book」と表すべきで、@「TmpBook」、@「C:TmpBook」.