【问题标题】:Search a directory for files created between two dates在目录中搜索在两个日期之间创建的文件
【发布时间】:2017-09-09 13:23:44
【问题描述】:

我正在尝试搜索指定文件夹中的所有文件,这些文件是在两个日期之间创建的。

日期是从两个日期时间选择器中选择的。

我为 C# 找到了这个:

var directory = new DirectoryInfo(your_dir);
var files = directory.GetFiles()
.Where(file => file.LastWriteTime >= DateTimePicker1
&& file.LastWriteTime <= datetimerpicker2);

我改成了:

Dim Directory = New DirectoryInfo("C:\Test")
Dim path As String
path = (TextBox1.Text)
Dim files = Directory.GetFiles().Where(File.GetLastWriteTime(path) >= DateTimePicker1 And File.GetLastWriteTime <= datetimerpicker2)

我显然弄错了一些语法等。

结果(文件路径和名称)将发布到 Listbox1。我还希望能够通过单击其列表框条目来打开文件路径,但这是我尚未开始研究的内容。

对 VB.NET 中的解决方案有什么想法吗?

【问题讨论】:

    标签: vb.net file date search directory


    【解决方案1】:

    您必须使用DateTimePicker.Value 属性。也使用 VB.NET 而不是 C# 语法:

    Dim files = From file in directory.EnumerateFiles()
                Where file.LastWriteTime >= DateTimePicker1.Value AndAlso file.LastWriteTime <= Datetimerpicker2.Value 
    

    【讨论】:

      【解决方案2】:

      在 Tim Schmelter 的帮助下,我得到了想要的结果;

          ListBox1.Items.Clear()
          Dim csvFiles = From csv In Directory.EnumerateFiles(TextBox1.Text, "*.*", IO.SearchOption.AllDirectories)
                         Where File.GetCreationTime(csv).Date >= DateTimePicker1.Value AndAlso File.GetCreationTime(csv) <= DateTimePicker2.Value
      
          For Each csvPath In csvFiles
              ListBox1.Items.Add(csvPath)
          Next
      
      End Sub
      

      【讨论】:

      • 即使蒂姆的回答不是完全这个,你仍然应该将其标记为已接受,因为它确实帮助你解决了 90% 的问题问题。
      【解决方案3】:

      这个怎么样

      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          Dim path As String = TextBox1.Text
          LoadListBox(path)
      End Sub
      
      Private csvFiles As List(Of String)
      Private Sub LoadListBox(path As String)
          Dim di As New IO.DirectoryInfo(path)
          di.EnumerateFiles("*.*", IO.SearchOption.AllDirectories)
          csvFiles = (From csv In di.EnumerateFiles("*.*", IO.SearchOption.AllDirectories)
                      Where csv.CreationTime.Date >= DateTimePicker1.Value.Date AndAlso
                       csv.CreationTime.Date <= DateTimePicker2.Value.Date
                       Select csv.FullName).ToList
      
          ListBox1.DataSource = csvFiles
      
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-26
        • 1970-01-01
        • 2015-07-01
        • 2013-12-23
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多