【问题标题】:File Sorting using Visual Basic使用 Visual Basic 进行文件排序
【发布时间】:2012-02-16 20:42:23
【问题描述】:

如何对目录中的文件进行排序?

我将拥有 500 多个以下格式的文件。

prod_orders_XXX_<TimeStamp>.dat 

XXX         =  symbol of the product and the length may varies between 3-6.
<TimeStamp> =  date and time

同一 XXX 的多个文件可能具有不同的时间戳。

这里有一些例子:

prod_orders_abc_20122001083000.dat 
prod_orders_abc_20122001083111.dat 
prod_orders_xyz_20122001093157.dat 
prod_orders_xyz_20122001083000.dat 
prod_orders_abc_20122001163139.dat 
prod_orders_abc_20122001093137.dat

【问题讨论】:

  • 请显示一个示例文件名。你想怎么排序,文件名升序,创建时间降序?
  • 需要按创建时间降序排序..
  • 如图所示,文件中的时间戳将在 1 月 1 日之后和 1 月 2 日之前排序 2 月 1 日。这是你想要的吗?

标签: vb.net sorting file-io filesort


【解决方案1】:

下次请立即提供正确的示例文件和要求;)

这是你需要的:

Dim fileList = (From file In New IO.DirectoryInfo(directoryPath).GetFiles()
          Where file.Name.IndexOf("prod_orders_") > -1
          Let dateIndex = file.Name.LastIndexOf("_") + 1
          Let dateIndexEnd = file.Name.LastIndexOf(".")
          Let datePart = file.Name.Substring(dateIndex, dateIndexEnd - dateIndex)
          Where datePart.Length = 14 AndAlso ULong.TryParse(datePart, 0)
          Let year = Int32.Parse(datePart.Substring(0, 4))
          Let day = Int32.Parse(datePart.Substring(4, 2))
          Let month = Int32.Parse(datePart.Substring(6, 2))
          Let hour = Int32.Parse(datePart.Substring(8, 2))
          Let minute = Int32.Parse(datePart.Substring(10, 2))
          Let second = Int32.Parse(datePart.Substring(12, 2))
          Let timestamp = New Date(year, month, day, hour, minute, second)
          Order By timestamp Descending
          Select file).ToList()

【讨论】:

  • 你好蒂姆,我刚刚重新编辑了我的帖子。很抱歉给您带来不便。
  • @Santhosh:编辑了我的答案,下次请提供正确的要求和示例;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2016-07-27
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
相关资源
最近更新 更多