我有两个程序,一个在您点击按钮时创建一个.txt
文件,并将这些文件命名为差异名称,如:"test1.txt
,test2.txt
,test3.txt
。 ..etc。“(文件的名称不是连续的。)另一个程序必须打开最后创建的文件,并且知道哪个文件是最后一个文件的唯一方法是使用”数据修改“过滤器;因为那些文件是在特定文件夹中创建的(我使用Windows 7作为操作系统)。
如何打开第一个程序创建的最后一个文件?
示例:
test1.txt--- data modified: 08/03/2016 06:33am
test3.txt----data modified: 08/03/2016 06:35am
test4.txt----data modified: 08/03/2016 07:26am
test2.txt----data modified: 08/03/2016 09:35am
我想打开/阅读此文件
我看到了很多工具“FileSystemWatcher”的例子,但我真的知道如何比较“数据修改”。还是存在另一种方法呢?
答案 0 :(得分:2)
最简单,最可靠的方法是生成带有时间戳的文件名。之后,当您开始阅读它们时,解析标记并按所需顺序处理所有文件。
不要依赖有关文件的系统信息,如果这对您的设计是可行的,因为它可能会错过 - 引导您在某些计算机上(取决于Windows版本,配置......)
File.GetLastWriteTime seems to be returning 'out of date' value
答案 1 :(得分:2)
static void Main(string[] args)
{
var latestModifiedFile = GetLatestModifiedFile(@"Path here");
Console.WriteLine(latestModifiedFile);
System.Diagnostics.Process.Start(latestModifiedFile)
}
static string GetLatestModifiedFile(string directory)
{
var files = Directory.GetFiles(directory);
return files.OrderBy(f => File.GetLastWriteTime(f)).LastOrDefault();
}
回答关于FileSystemWatcher的问题:
static void Main(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"Path here";
watcher.NotifyFilter = NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Filter = "*.txt";
watcher.Created += new FileSystemEventHandler(OnCreated);
watcher.EnableRaisingEvents = true;
Console.Read();
}
static void OnCreated(object source, FileSystemEventArgs e)
{
Console.WriteLine("Created file: " + e.FullPath);
System.Diagnostics.Process.Start(e.FullPath);
}