0

アプリケーションで問題が発生しています。DateTime に基づいてフォルダーからすべてのファイルを取得したいのですが、Directory.GetFile() または C# を介したその他の組み込み関数で可能ですか?

ありがとうシャシャンク

ここに画像の説明を入力

4

6 に答える 6

1

System.IO.FileSystemInfo.CreationTime を使用した非常に良い例がここにありますhttp://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.creationtime.aspx

于 2012-07-19T08:18:18.550 に答える
1

Linq ソリューション

string startFolder = @"c:\program files\Microsoft Visual Studio 9.0\";
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

        IEnumerable<System.IO.FileInfo> fileQuery =
            from file in fileList
            where (file.CreationTime <= maxdate//replac eyour date here
                   && file.CreationTime >= mindate)//replac eyour date here

            orderby file.CreationTime 
            select file;

このようにファイル時間を確認できます

string fileName = @"C:\MyPath\MyFile.txt"; 
    if (File.Exists(fileName)) 
    {
        label_CreationTime.Text = 
                 File.GetCreationTime(fileName).ToString(); 
        label_LastAccess.Text = 
                 File.GetLastAccessTime(fileName).ToString(); 
        label_LastWrite.Text = 
                 File.GetLastWriteTime(fileName).ToString(); 
    }

したがって、直接各ファイルをチェックするには、次のようなことをする必要があります

string[] filePaths = Directory.GetFiles(@"c:\MyDir\");
foreach(string fileName in filePaths )
{
          Console.Writeln(fileName );
          Console.Writeln(File.GetCreationTime(fileName).ToString()); 
          Console.Writeln(File.GetLastAccessTime(fileName).ToString()); 
          Console.Writeln(File.GetLastWriteTime(fileName).ToString()); 
}
于 2012-07-19T08:16:47.677 に答える
0

FileInfoを取得し、作成日/変更日を確認することは、私が考えることができるオプションです

于 2012-07-19T08:18:28.680 に答える
0

あなたが試すことができます

    var d = new DirectoryInfo(dirPath);
    var filesInfo d.GetFiles().OrderBy(x => x.LastAccessTime);

または、日時も照会できます

   var filesInfo = d.GetFiles().Where(x=>x.LastAccessTime > datetTime);
于 2012-07-19T08:19:39.927 に答える
0

昨日作成されたすべてのファイルにアクセスするには、必要な最小値/最大値を設定して、Linq で次のようにします。

作成ではなくファイルの変更を表示する場合は、次CreationTimeのように置き換えます。LastWriteTime

var targetDirectory = "Put your dir here";
var minDate = DateTime.Today.AddDays(-1);
var maxDate = DateTime.Today.AddSeconds(-1);

try
{
    var dir = new Directory(targetDirectory);
    foreach (var file in dir.GetFiles().Where(f => f.CreationTime >= minDate 
                                                && f.CreationTime <= maxDate))
    {
        // Do something with file.
        Console.WriteLine("File : {0}", file.FullName);
    }
}
catch( Exception e )
{
    // Handle access exceptions.
}
于 2012-07-19T08:33:34.580 に答える
0

プロパティでオブジェクトを使用Directory.EnumerateFilesおよびフィルタリングできます。次に例を示します。FileInfoLastWriteTime

var minimumDate = new DateTime(2012, 1, 1);
var directory = new DirectoryInfo(@"D:\MyFolder");
var files = directory.EnumerateFiles("*", SearchOption.AllDirectories)
            .Where(f => f.LastWriteTime >= minimumDate);

これは をスローする可能性があることに注意してくださいUnauthorizedAccessException

于 2012-07-19T08:21:41.520 に答える