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

Jul*_*ian 20 c# file-io

我不知道我的错误.

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

VisualSudio说这是错误:

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

Ser*_*kiy 49

DirectoryInfo不是静态类(您将它与暴露静态方法的Directory混合)因此您应该创建它的实例:

var dir = new DirectoryInfo(textBoxPath.Text);
FileInfo[] files = dir.GetFiles();
Run Code Online (Sandbox Code Playgroud)

另外我建议你用它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);
} 
Run Code Online (Sandbox Code Playgroud)

还有一个想法 - 如果你不需要任何关于文件的额外信息,除了名字,那么你只能获得文件名,而不需要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);             
} 
Run Code Online (Sandbox Code Playgroud)