我正在嘗試根據特定目錄中的檔案創建時間對檔案進行排序,并將它們存盤在字串陣列中。但是我收到錯誤“無法將型別'System.IO.FileInfo[]'隱式轉換為'string[] '。是否不可能將資料存盤在字串陣列中?
這是我的代碼:
string[] getFiles(string path, string text, string fileExtension)
{
try
{
string searchingText = text;
searchingText = "*" text "*";
string[] filesArray = Directory.GetFiles(path, searchingText, SearchOption.TopDirectoryOnly).Select(f => new FileInfo(f)).OrderBy(f => f.CreationTime).ToArray();
//filesArray = filesArray.OrderBy(s => s.).ToArray();
//string[] filesArray2 = Array.Sort(filesArray);
List<string> filesList = new List<string>(filesArray);
List<string> newFilesList = new List<string>();
foreach(string file in filesList)
{
if ( file.Contains(fileExtension) == true)
{
newFilesList.Add(file);
}
}
string[] files = newFilesList.ToArray();
return files;
}
catch
{
string[] files = new string[0];
return files;
}
}
uj5u.com熱心網友回復:
你在哪里得到這個錯誤?該錯誤不言自明:您的函式回傳一個字串陣列,您不能簡單地將字串轉換為 FileInfo 物件。要獲取 FileInfo 物件,請使用:
var fi = new FileInfo(fileName);
但是,如果您只想獲得一個排序串列,我會采用不同的方法,例如:
var folder = @"C:\temp";
var files = Directory
.EnumerateFiles(folder)
.OrderBy(x => File.GetCreationTime(x))
.ToArray();
這將為您提供一個包含檔案名的字串串列,按創建日期排序。
編輯:
如果您只想要具有給定擴展名的檔案,您可以擴展 LINQ 查詢:
var files = Directory
.EnumerateFiles(folder)
.Where(x => x.EndsWith(".ext"))
.OrderBy(x => File.GetCreationTime(x))
.ToArray();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/370009.html
上一篇:切換問題。一些陣列沒有切換
下一篇:我無法將多個資料php陣列傳遞給json字串串列。"subnet_name":"[\"phpsubnet\",\"testsubnet
