0

我编写了一个代码来移动文件,如下所示

            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)
            {

            }
        }

    }

但是我遇到了异常,正如我所提到的,任何人都可以告诉我为什么,有时我会收到错误,因为访问路径被拒绝

4

2 回答 2

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);
于 2010-09-20T14:12:22.667 回答
0

在运行时没有看到应用程序中使用的值,我猜测tvwACH.SelecteNode.ToString()或者strOrgpath.Substring(10)不是有效的文件系统路径。

您应该调试您的应用程序并设置断点以查看这些值是什么(如果此时您的问题不明显,则发布它们)。

于 2010-09-20T14:11:24.100 回答