我编写了一个移动文件的代码,如下所示
private void Move_Click(object sender, EventArgs e)
{
string strOrgpath = string.Empty, strNewpath = string.Empty;
strOrgpath = tvwACH.SelectedNode.ToString();
string strPath = strOrgpath.Substring(10);
FolderBrowserDialog folderborwser1 = new FolderBrowserDialog();
if (folderborwser1.ShowDialog() == DialogResult.OK)
{
try
{
strNewpath = folderborwser1.SelectedPath;
File.Move(strPath, strNewpath);
}
catch (Exception ex)
{
}
}
}
但是我得到了例外,因为我提到可以任何一个人告诉我为什么以及有时我得到错误因为访问路径被拒绝
答案 0 :(得分:1)
确保您的子字符串调用返回正确的结果。如果可能,请使用Path
类中的静态方法。查看File.Move的MSDN页面并注意预期的参数 - 您应该提供两个有效的完整文件名(例如C:\Blah\myFile.txt
)。
如果用户在文件夹浏览器对话框中选择了他们没有写入权限的文件夹,则可能会出现“拒绝访问”错误消息。这是您必须在代码中处理的场景,可能是通过捕获UnauthorizedAccessException
。
更新:目标文件也应指向文件名。所以你需要做这样的事情:
var origFileName = Path.GetFileName(strPath);
strNewpath = Path.Combine(folderborwser1.SelectedPath, origFileName);
File.Move(strPath, strNewpath);
答案 1 :(得分:0)
在运行时没有看到应用程序中使用的值,我猜测tvwACH.SelecteNode.ToString()
或strOrgpath.Substring(10)
不是有效的文件系统路径。
你应该调试你的应用程序并设置一个断点来查看这些值是什么(如果你的问题在那时并不明显,那就发布它们。)