2013-07-12 35 views
14

我不知道我的錯誤是什麼。如何使用GetFile()獲取文件夾中所有文件的fileinfo?

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);

回答

30

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

downvote的原因是什麼? –

3

使用以下:

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到properway寫入本地變量名fileInformations。使用Path.Combine來組合路徑和文件名,而不是使用字符串組合,因爲這將處理丟失/和其他路徑問題。

相關問題