簡體   English   中英

如何使用GetFile()獲取文件夾中所有文件的fileinfo?

[英]How can i get the fileinfo of all files in a folder with GetFile()?

我不知道我的錯誤。

FileInfo[] FileInformation = DirectoryInfo.GetFiles(textBoxPath.Text);  
for (int i = 0; i <= FileInformation.Length; i++)
{
    File.Move(FileInformation[i].DirectoryName, FileInformation[i].Directory + "File" + i);
}

VisualSudio說這是錯誤:

System.IO.DirectoryInfo.GetFiles(textBoxPath.Text);

DirectoryInfo不是靜態類(您將它與暴露靜態方法的Directory混合)因此您應該創建它的實例:

var dir = new DirectoryInfo(textBoxPath.Text);
FileInfo[] files = dir.GetFiles();

另外,我建議你使用Path.Combine生成新的文件路徑和FileInfo.MoveTo方法,它們不需要源目錄名:

for(int i = 0; i < files.Length; i++)
{
    FileInfo file = files[i];
    string destination = Path.Combine(file.DirectoryName, "File", i.ToString());
    file.MoveTo(destination);
} 

還有一個想法 - 如果除了名稱之外你不需要任何關於文件的附加信息,那么你只能獲得文件名,而不需要創建FileInfo對象。 使用DirectoryFile類的靜態方法。 那會更有效率:

string sourceDir = @"D:\Downloads";

string[] files = Directory.GetFiles(sourceDir);
for (int i = 0; i < files.Length; i++)
{
    string fileName = files[i];
    var destination = Path.Combine(sourceDir, "File", i.ToString());
    File.Move(fileName, destination);             
} 

使用以下內容:

    System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(textBoxPath.Text);
    System.IO.FileInfo[] fileInformations = dir.GetFiles();  
    for (int i = 0; i <= fileInformations.Length; i++)
    {
        System.IO.File.Move(fileInformations[i].DirectoryName, System.IO.Path.Combine(FileInformation[i].Directory, "File" + i));
    }

編輯:將您的FileInformation重命名為正確的,以編寫本地變量名稱fileInformations 使用Path.Combine組合路徑和文件名而不是使用字符串組合,因為這將處理丟失/和其他路徑問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM