我需要通过名称的一部分从文件夹打开文件。 我有一个文件夹中的文件,例如所有文件都在c:\ temp \ 文件名的格式为id_yyyyMMdd.pdf,其中id是某个数字,文件ID,id始终是唯一的,yyyyMMdd是格式年,月,日的日期。 现在在程序中我得到id,我需要找到具有该id的文件,然后检查创建文件的日期,如果有新版本的文件(数据库中的blob)我需要将这个新文件写入磁盘而不是打开它,如果这是我需要打开的文件的最后一个版本。(我有像blob一样的PDF,我需要检查硬盘上一个版本文件。)我知道如何从blob写入pdf到文件我找不到打开的方法(或找到)带有部分名称的文件,并获得第二部分(日期)进行比较。
有什么建议吗?
样品: 在硬盘上我有文件:
在数据库表中我有
现在在程序中我选择id“12345”因为日期相同我需要打开文件12345_20140508.pdf 当我得到select id 12346时,我需要先从数据库中获取文件文件,因为数据库中的日期比硬盘上的日期更新,删除文件12346_20140508.pdf并保存新文件,如12346_20140510.pdf而不是打开。
如果需要,我可以更改名称的格式。
答案 0 :(得分:1)
你应该做的是:
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
}
答案 1 :(得分:1)
我认为你遇到的主要问题是"如何通过id"找到最新的文件。所以可能你可以试试这段代码。它可以找到最后创建的文件以一些id开头。一旦你收到文件,我认为其他事情对你来说不会成为问题。
var directoryInfo = new DirectoryInfo(@"c:\temp");
var latestFile = directoryInfo.GetFiles()
.Where(f => f.Name.StartsWith("12345_"))
.OrderByDescending(f => f.CreationTime)
.FirstOrDefault();