我的程序有一个树视图,列出了远程计算机中的文件。我需要做的是将这些文件从远程复制到我的本地文件夹之一。我希望当我右键单击treeview中的文件时,会出现一个对话框供我选择文件夹,然后在对话框中单击“确定”,我单击的文件可以保存在该文件夹中。
由于远程文件的路径是unc路径,我正在使用
File.Copy(string remote_address, string local_address)
复制文件。正如我之前所说,我需要一个对话窗口来选择文件夹。所以我尝试使用FolderBowserDialog
,但是它的SelectedPath
属性只返回不包含文件夹名称的文件夹的路径!而且我没有找到任何属性来返回文件夹的名称。
所以我的问题是:
FolderBowserDialog
,我可以获得保存文件的位置的完整路径吗? SaveFileDialog
。问题是我不知道如何做到这一点。答案 0 :(得分:1)
我不确定你指的是哪个“SavePath”属性,因为FolderBrowserDialog没有这样的属性。您要查找的属性称为SelectedPath
。
FolderBrowserDialog dlg = new FolderBrowserDialog();
dlg.ShowDialog();
string local_address = dlg.SelectedPath;
答案 1 :(得分:1)
以下内容应该有效:
var fbd = new FolderBrowserDialog();
if(fbd.ShowDialog() == DialogResult.OK)
{
var localPath= Path.Combine(fbd.SelectedPath, Path.GetFilename(remote_address));
File.Copy(remote_address, localPath);
}
答案 2 :(得分:0)
调用FolderBrowserDialog的ShowDialog()方法后,它将返回一个变量,指示用户按下的按钮(即,确定或取消)
确保用户使用" Ok"为了表明他们想要继续操作,你可以访问" SelectedPath"字段,它将为您提供他们选择的完整本地路径。
然后,您可以通过调用
获取最终路径System.IO.Path.Combine(fbd.SelectedPath,remoteFileName);
我假设fbd是你的FolderBrowserDialog实例,而remoteFileName应该只包含远程文件的文件名部分(例如" MyFile.txt");
如果要将文件名与完整的远程路径分开,请使用
var remoteFileName = System.IO.Path.GetFileName(remotePath);
话虽这么说,用户通常期望的不是文件夹浏览器对话框,而是保存文件对话框。
您可以使用文件名初始化保存文件对话框,让用户选择一个文件夹,如果愿意,也可以更改目标文件名。
SaveFileDialog sfd = new SaveFileDialog();
sfd.FileName = remoteFileName;
sfd.ShowDialog();
sfd.FileName // now contains the full path to the file that the user has selected
不要忘记从ShowDialog()调用中获取结果,以确保用户没有取消保存dailog!