按他名字的一部分打开文件

本文关键字:文件 一部分 | 更新日期: 2023-09-27 18:09:12

我需要按名称的一部分从文件夹打开文件。我有文件在一个文件夹中,例如,所有文件都在c:'temp'文件名称的格式为id_yyyyMMdd.pdf,其中id为数字,文件id,且id总是唯一的,yyyyMMdd为日期,格式为年、月、日。现在在程序中,我得到id,我需要找到具有该id的文件,然后检查文件创建的日期,如果有新版本的文件(数据库中的blob),我需要将这个新文件写入磁盘,然后打开它,如果这是文件的最后一个版本,我需要打开它。(我有pdf像blob,我需要检查硬盘上的最后一个版本文件。)我知道如何将pdf从blob写到文件,我找不到打开(或找到)文件的方法,然后获得第二部分(日期)来比较它。

有什么建议吗?

样本:在硬盘上我有文件:

  • c: ' temp ' 12345 _20140508.pdf
  • c: ' temp ' 12346 _20140508.pdf

在数据库表中我有

  • id(12345)日期(08-MAY-2014)和pdf1文件像blob。
  • id(12346) date(10-MAY-2014) and pdf2 file like blob.

现在在程序中,我选择id"12345",因为日期相同,我需要打开文件12345_20140508.pdf当我选择id 12346时,我需要首先从数据库中获取文件文件,因为数据库中的日期比硬盘上的日期更新,删除文件12346_20140508.pdf并保存新文件,如12346_20140510.pdf,然后打开。

如果需要,我可以更改名称的格式

按他名字的一部分打开文件

我想你遇到的主要问题是"如何通过id找到最新的文件"。所以也许你可以试试这个代码。它可以找到以某个id开头的最后创建的文件。一旦你得到了文件,我想其他事情对你来说就不是问题了。

var directoryInfo = new DirectoryInfo(@"c:'temp");
var latestFile = directoryInfo.GetFiles()
                              .Where(f => f.Name.StartsWith("12345_"))
                              .OrderByDescending(f => f.CreationTime)
                              .FirstOrDefault();

你应该做的是:

string searchPattern = "what you want to open";
File.Open(Directory.GetFiles(@"c:'", searchPattern + "*").First());

这将以c#的方式打开文件,

然而,在应用程序中打开

使用

Process.Start("notepad.exe", Directory.GetFiles(@"c:'", searchPattern + "*").First());

如果你想把它们全部打开,那么在foreach

中换行
foreach (var file in Directory.GetFiles(@"c:'", searchPattern + "*"))
{
    //do stuff
}