我不知道我的错误。
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);
答案 0 :(得分:45)
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
个对象。使用Directory
和File
类的静态方法。那会更有效率:
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);
}
答案 1 :(得分: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
重命名为正确的位置以编写局部变量名fileInformations
。使用Path.Combine
组合路径和文件名而不是使用字符串组合,因为这将处理丢失/和其他路径问题。