如何打开创建的最后一个文件(.txt)?

时间:2016-03-08 16:04:59

标签: c#

我有两个程序,一个在您点击按钮时创建一个.txt文件,并将这些文件命名为差异名称,如:"test1.txttest2.txttest3.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”的例子,但我真的知道如何比较“数据修改”。还是存在另一种方法呢?

2 个答案:

答案 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);
    }