使用 openfiledialog 移动多个文件
Moving multiple files with openfiledialog
我正在尝试将多个文件移动到打开文件对话框中的另一个目录,同时保留文件名。我在处理多个文件时遇到了麻烦,并创建了一个字符串数组和一个 foreach 循环。下面是代码。我试图循环数组(i++ 等),但一直收到 'cannot find string[]' 错误。基本上它对第一个文件没有问题,但它想继续将同一个文件移动到另一个目录。它不会向下移动所选文件的列表来移动它们。我尝试了 'System.IO.File.Move',结果相同。我意识到下面这段代码是伪劣的。
string [] MoveFrom = openFileDialog1.FileNames;
string [] FileName = openFileDialog1.SafeFileNames;
string MoveTo = "C://Users//Kevin//Desktop//Archive";
foreach (string files in MoveFrom)
{
foreach (string files2 in FileName)
{
Directory.Move(MoveFrom, MoveTo + "//" + FileName)
}
}
首先,您必须将 openFileDialog 的 属性 Multiselect
设置为 true
。然后您将访问 FileNames
属性。之后你只能使用 on foreach
循环来移动文件。
关于异常:您尝试将数组 MoveFrom
传递给方法 Move()
:
Directory.Move(MoveFrom, MoveTo + "//" + FileName)
但根据此方法的 syntax 必须有 string
变量:
public static void Move(string sourceDirName, string destDirName)
在foreach中你应该使用循环变量。此外,我更喜欢使用 Path.Combine()
来防止使用 '\' 和 Path.GetFileName()
来获取扩展名为
的文件名
请尝试这样的操作:
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string[] MoveFrom = openFileDialog1.FileNames;
string MoveTo = "C://Users//Kevin//Desktop//Archive";
foreach (string files in MoveFrom)
{
Directory.Move(files, Path.Combine(MoveTo, Path.GetFileName(files)));
}
}
这应该有效:
string MoveTo = "D:\"; //Change to your path
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
foreach (string _file in openFileDialog1.FileNames)
{
FileInfo fi = new FileInfo(_file);
File.Move(_file, Path.Combine(MoveTo, fi.Name));
}
}
我正在尝试将多个文件移动到打开文件对话框中的另一个目录,同时保留文件名。我在处理多个文件时遇到了麻烦,并创建了一个字符串数组和一个 foreach 循环。下面是代码。我试图循环数组(i++ 等),但一直收到 'cannot find string[]' 错误。基本上它对第一个文件没有问题,但它想继续将同一个文件移动到另一个目录。它不会向下移动所选文件的列表来移动它们。我尝试了 'System.IO.File.Move',结果相同。我意识到下面这段代码是伪劣的。
string [] MoveFrom = openFileDialog1.FileNames;
string [] FileName = openFileDialog1.SafeFileNames;
string MoveTo = "C://Users//Kevin//Desktop//Archive";
foreach (string files in MoveFrom)
{
foreach (string files2 in FileName)
{
Directory.Move(MoveFrom, MoveTo + "//" + FileName)
}
}
首先,您必须将 openFileDialog 的 属性 Multiselect
设置为 true
。然后您将访问 FileNames
属性。之后你只能使用 on foreach
循环来移动文件。
关于异常:您尝试将数组 MoveFrom
传递给方法 Move()
:
Directory.Move(MoveFrom, MoveTo + "//" + FileName)
但根据此方法的 syntax 必须有 string
变量:
public static void Move(string sourceDirName, string destDirName)
在foreach中你应该使用循环变量。此外,我更喜欢使用 Path.Combine()
来防止使用 '\' 和 Path.GetFileName()
来获取扩展名为
请尝试这样的操作:
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string[] MoveFrom = openFileDialog1.FileNames;
string MoveTo = "C://Users//Kevin//Desktop//Archive";
foreach (string files in MoveFrom)
{
Directory.Move(files, Path.Combine(MoveTo, Path.GetFileName(files)));
}
}
这应该有效:
string MoveTo = "D:\"; //Change to your path
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
foreach (string _file in openFileDialog1.FileNames)
{
FileInfo fi = new FileInfo(_file);
File.Move(_file, Path.Combine(MoveTo, fi.Name));
}
}