【问题标题】:Getting an exception as "The parameter is incorrect.\r\n" while moving file移动文件时出现“参数不正确”的异常。\r\n
【发布时间】:2010-09-20 14:06:13
【问题描述】:

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

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

            }
        }

    }

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

【问题讨论】:

  • 您是否检查过 strPath 和 strNewPath 的值以确保它们在 File.Move 上看起来正确?您能否举例说明这些值可能是什么?

标签: c# winforms folderbrowserdialog


【解决方案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);

【讨论】:

  • 我的子字符串返回正确的结果只有我得到的路径为“c:\some.txt”,我想将它移动到用户从文件夹浏览器对话框中选择的其他目的地
  • 移动的目的地也应该是一个文件名。我更新了我的答案以包含一些示例代码。
【解决方案2】:

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

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

【讨论】:

  • 我得到了正确的值。初始路径将是树节点,所以我已经获取了它的子字符串并分配给另一个字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多