【问题标题】:How can I open the last file (.txt) that was created?如何打开创建的最后一个文件 (.txt)?
【发布时间】:2016-03-08 16:04:59
【问题描述】:

我有两个程序,一个在您单击按钮时创建一个 .txt 文件,并将这些文件命名为不同的名称,例如:"test1.txttest2.txttest3.txt...等。”(名称文件不连续)。其他程序必须打开最后创建的文件,并且知道哪个文件是最后一个文件的唯一方法是使用“数据修改”过滤器;因为这些文件是在特定文件夹中创建的(我使用 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”的例子,但我真的知道如何比较“数据修改”。还是有其他方法可以做到这一点?

【问题讨论】:

    标签: c#


    【解决方案1】:
        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);
        }
    

    【讨论】:

    • 然后用该扩展的默认程序打开它:System.Diagnostics.Process.Start(latestModifiedFile)
    • @Quantic,谢谢,我补充说是为了更准确。 :)
    【解决方案2】:

    最简单和最可靠的方法是生成带有时间戳的文件名。之后,当您开始阅读它们时,解析图章并按所需顺序处理所有文件。

    不要依赖有关文件的系统信息,如果这对您的设计是可行的,因为它可能会在某些机器上误导您(取决于 Windows 版本、配置...)

    File.GetLastWriteTime seems to be returning 'out of date' value

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      相关资源
      最近更新 更多