按他名字的一部分打开文件
本文关键字:文件 一部分 | 更新日期: 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
}