2016-07-13 6 views
0

ローカルドライブ上のフォルダからすべてのイメージファイルを連続して読み込み、すべてのイメージを読み込んだら何らかの処理を行い、プログラムを終了したいと思います。画像番号は連続していませんがランダムですが、1つのフォルダにあります。現在のところ、私のプログラムは1つのファイルしか読み込めません。以下のコードを参照してくださいC#を使用してフォルダ内のファイルを連続して読み取る方法は?

string imagePath = Path.Combine(Freconfig.GetSamplesFolder(), "24917324.jpg"); 
+1

Directory.GetFilesを使用しますか? – Ian

+1

「* .jpg」と一致するディレクトリ内のすべてのファイルを[列挙する](http://stackoverflow.com/q/5669617/1997232)したいと思うように聞こえます。 – Sinatr

答えて

4

使用FileSystemWatcher https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

FileSystemWatcher watcher = new FileSystemWatcher(); 
    watcher.Path = Freconfig.GetSamplesFolder(); 
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
     | NotifyFilters.FileName | NotifyFilters.DirectoryName; 
    watcher.Filter = "*.jpg"; 

    // Add event handlers. 
    watcher.Changed += new FileSystemEventHandler(OnChanged); 
    watcher.Created += new FileSystemEventHandler(OnChanged); 
    watcher.Deleted += new FileSystemEventHandler(OnChanged); 
    watcher.Renamed += new RenamedEventHandler(OnRenamed); 

    // Begin watching. 
    watcher.EnableRaisingEvents = true; 

、既存のすべてのファイルを検索し、それらを処理するためにdirectorylisting使用し、その後、これは、ディレクトリ内のすべてのファイルを取得する必要

+0

わからない、既存のファイルをすべて見つけるためにdirectorylistingを使用することはどういう意味ですか?ウォッチャーを始める前に私の処理を行うのが最善でしょうか? –

+0

ディレクトリ内のすべてのJPGを処理する必要がある場合は、Mfusikiが提案するものを使用してください。 – Ive

1

これはあなたが探しているものですか? Directory.GetFiles(@"..\somepath")MSDN

1

あなたは試みることができる:

directoryInfo = new DirectoryInfo("C:/YOUR/DIRECTORY/HERE]"); 
var files = directoryInfo.GetFiles("*.jpg").OrderBy(x => x.CreationTimeUtc); 
foreach (var file in files) 
{ 
//Your processing 
} 

注これはディレクトリ内のすべての.jpgファイルを取得します。 foreachループは、最も古いファイルから始めます。ウォッチャーを開始する前に

1

ウォッチャ使用:

private List<FileInfo> GetFileInfo() 
    { 
     string path = @"C:\MyPath"; 
     List<FileInfo> files = new List<FileInfo>(); 
     DirectoryInfo di = new DirectoryInfo(path); 

     //TopDirectoryOnly if you don't want subfolders 
     foreach (FileInfo f in di.GetFiles("*.jpg", SearchOption.TopDirectoryOnly)) 
     { 
      files.Add(f); 
     } 

     return files; 
    } 

あなたのコードでは、返されたコレクションを繰り返し処理し、必要な作業を行いますそれら。

関連する問題