2011-08-09 7 views
0

可能性の重複:
how to read all files inside particular folderC#コードでディレクトリ内の各ファイルをチェックするにはどうすればよいですか?

私は私が思いついた次のコードを持っている:

string[] lines = System.IO.File.ReadAllLines(@"C:\Notes\Variables1.txt"); 
foreach (string line in lines) 
{ 
    process(line); 
} 

string[] lines = System.IO.File.ReadAllLines(@"C:\Notes\test1.txt"); 
foreach (string line in lines) 
{ 
    process(line); 
} 

を私は変更することができ、シンプルで信頼性の高い方法はありますコードを使用して、Notesディレクトリ内のすべての.txtファイルを検索し、それぞれを順番に読み取ります。いくつかの方法で私は順番に各ファイルとファイルが空の場合にクラッシュしない何かを指定することなくこれをコード化することができます。

答えて

0

を繰り返します。あなたがすでにやっていたように、ひとつずつ処理してください。

string[] files = Directory.GetFiles(@"C:\Notes", "*.txt", SearchOption.TopDirectoryOnly); 
foreach(string file in files) 
{ 
    string[] lines = File.ReadAllLines(file); 
    foreach (string line in lines) 
    { 
     process(line); 
    }   
} 

System.IO名前空間の多くのがあります。

+0

感謝。ところで、私はファイル名を取得して文字列に入れることができる何らかの方法がありますか? – Jason

+1

@Jason:既に 'string file'に入っています。拡張子やパスなどを取り除く必要がある場合は、この文字列を['FileInfo'](http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx)に書き込む必要があります。 ['Path'](http://msdn.microsoft.com/en-us/library/system.io.path_methods.aspx)クラスの静的メソッドを使用してください。 – Oliver

4
string[] files = Directory.GetFiles(source, "*.txt"); 
foreach(string filename in files) 
{ 
    //go do something with the file 
} 
2

すべてのファイルの一覧を取得するには、DirectoryInfoクラスを使用します。

Isには、このためにオーバーロードされたEnumerateFilesメソッドがあります。

0
string[] files = Directory.GetFiles(directory); 
foreach(string filename in files) 
{ 
    if (Path.GetExtension(filename) != ".txt") 
     continue; 

    string[] lines = System.IO.File.ReadAllLines(filename); 
    foreach (string line in lines) 
    { 
     process(line); 
    } 
} 
0

使用System.IO.Directory.ReadFiles

例えば:

string[] filePaths = Directory.GetFiles(@"c:\Notes\", "*.txt") 

その後、単にあなたがDirectory.GetFiles()を使用して任意のディレクトリにあるファイルのコレクションを取得することができ、ファイルのパスを介し

0

あなたが欲しい:

Directory.GetFiles(path, "*.txt"); 

これは、あなたができるように、名前の配列を返します。順番にそれぞれのファイルをループ:

foreach (string file in Directory.GetFiles(path, "*.txt")) 
{ 
    string[] lines = System.IO.File.ReadAllLines(file); 
    foreach (string line in lines) 
    { 
     process(line); 
    } 
} 
関連する問題