我正在嘗試獲取目錄中的所有檔案并獲取最新檔案的名稱。
List<string> NewFiles = new List<string>();
NewFiles = Directory.GetFiles(path,, "*.*", SearchOption.AllDirectories).ToList();
String lastItem = NewFiles.Last();
問題是我在這個檔案夾中有 354 個檔案,我從中得到的最后一個檔案是檔案 99。
uj5u.com熱心網友回復:
Last()將為您提供恰好被列舉為最后一個檔案的檔案名。沒有特定的順序,所以這可能不是最后寫入的檔案。
改為使用DirectoryInfo.GetFiles時,您將獲得有關每個檔案的最后修改時間的資訊。
var dirInfo = new DirectoryInfo(path);
var allFiles = dirInfo.GetFiles("*.*", SearchOption.TopDirectoryOnly);
var lastModifiedFile = allFiles.OrderBy(fi => fi.LastWriteTime).LastOrDefault();
uj5u.com熱心網友回復:
正如克勞斯所說,您可以使用類的LastWriteTime屬性FileInfo從更新的目錄中獲取最后一個檔案。
DirectoryInfo di = new DirectoryInfo(@"<Your directory path>");
//This will get all files in the top directory
var newestFile = di.GetFiles("*", SearchOption.TopDirectoryOnly)
.OrderByDescending(f => f.LastWriteTime) //Sort(desc) by LastWriteTime
.First(); //Take the first file
uj5u.com熱心網友回復:
如果只是針對特定模式或特定檔案修改上述查詢
string pattern = "*.txt";
var dirInfo = new DirectoryInfo(directory);
var file = (from f in dirInfo.GetFiles(pattern) orderby f.LastWriteTime descending select f).First();
或者如果你想遞回運行
public static FileInfo GetNewestFile(DirectoryInfo directory) {
return directory.GetFiles()
.Union(directory.GetDirectories().Select(d => GetNewestFile(d)))
.OrderByDescending(f => (f == null ? DateTime.MinValue : f.LastWriteTime))
.FirstOrDefault();
}
像這樣打電話
FileInfo newestFile = GetNewestFile(new DirectoryInfo(@"your path"));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526620.html
標籤:C#列表文件目录操作系统
