2016-03-08 74 views
0

我有兩個程序,一個創建一個.txt文件,當你點擊一個按鈕,並命名這些文件的差異名稱,如:"test1.txt,test2.txt,test3.txt ...等等。「(文件的名稱不連續)。其他程序必須打開最後創建的文件,並且知道哪個文件是最後一個文件的唯一方法是使用「數據修改」過濾器;因爲這些文件是在特定文件夾(我使用Windows 7作爲操作系統)內創建的。 我怎樣才能打開由拳程序創建的最後一個文件如何打開創建的最後一個文件(.txt)?

?例如:

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
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); 
    } 
+1

然後用默認程序打開它擴展名:'System.Diagnostics.Process.Start(latestModifiedFile)' – Quantic

+0

@Quantic,謝謝,我補充說,要更準確。 :) –

+0

謝謝@TheAnathema;兩個代碼都按我的意願工作,你救了我一命! –

2

最簡單也是最可靠的方法是生成帶有時間戳的文件名。之後,當你開始閱讀時,解析郵票並按照所需順序處理所有文件。

不要依賴於有關文件系統的信息,如果這是你的設計是可行的,因爲它可能會錯過鉛你在某些機器(取決於Windows版本,配置......)

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

相關問題