【问题标题】:Why I am getting "The given path's format is not supported" error为什么我收到“不支持给定路径的格式”错误
【发布时间】:2015-09-18 12:51:18
【问题描述】:

我无法使用 c# 重命名位于 (D 驱动器) 中的文件。我收到错误

异常详细信息:System.NotSupportedException:给定路径的 不支持格式。

每次。

我正在使用

string oldfilename = @"D:\abc\file.txt";
string newfilename = @"D:\abc\tree.txt";
System.IO.File.Move(oldfilename, newfilename);

但我在最后一行得到了错误。 我还尝试将前两行更改为

string oldfilename = "D:\\abc\\file.txt";
string newfilename = "D:\\abc\\tree.txt";

我还确保文件“file.txt”存在。尝试使用不同的位置。

我也尝试读取 file.txt 的内容,但我得到了同样的错误。 我搜索了关于 SO 的所有问题,但没有运气,我无法解决这个问题。我认为在指定路径时我在驱动器号之后使用的“:”存在一些问题。请指导我。

【问题讨论】:

  • @TomDoesCode 可能是重复的,但很难判断这是否是同一个问题。
  • 那是真的代码吗?还是您发布了实际代码的修改版本?
  • 这就是代码!即使我很惊讶为什么会出现这个错误!
  • 您是否从其他地方复制/粘贴了代码?可能有不可见的 Unicode 字符,尽管在十六进制查看器中检查时您发布的文本似乎没有任何奇怪
  • 我无法重现(显然)。 D: 是 CD 还是映射的网络驱动器,不允许允许重命名?不过,这会返回一个不同的错误

标签: c# .net exception


【解决方案1】:

我在另一台电脑上试过了,但还是不行!(令人惊讶)。 我设法通过将“file.txt”移动到我的项目文件夹来解决这个问题。 现在我正在使用

string oldfilename = "file.txt";
string newfilename = "tree.txt";
System.IO.File.Move(oldfilename, newfilename);

这行得通! 这似乎不是这个问题的答案(对我来说),但它确实对我有用。

【讨论】:

  • 这不回答任何问题。相对路径和绝对路径都适用于 File.Move。事实上,如果 this 有效,则意味着文件夹路径 (D:\abc) 中有无效的 Unicode 字符,但文件名没有
【解决方案2】:

你为什么不使用:

 My.Computer.Filesystem.RenameFile("D:\file.txt", "tree.txt")

【讨论】:

    【解决方案3】:

    我自己尝试过,这些变体有效:

            string oldfilename = "C:\\Users\\User\\Downloads\\WorkTemp\\file.txt";
            string newfilename = "C:\\Users\\User\\Downloads\\WorkTemp\\file2.txt";
            System.IO.File.Move(oldfilename, newfilename);
    
    
            string oldfilename = @"C:\Users\User\Downloads\WorkTemp\file1.txt";
            string newfilename = @"C:\Users\User\Downloads\WorkTemp\file2.txt";
            System.IO.File.Move(oldfilename, newfilename);
    

    根据参考来源:http://referencesource.microsoft.com/#mscorlib/system/io/filestream.cs#749

    如果 : 在您的路径中的索引位于第三个或更高位置,则会引发 NotSupportedException。 (人们会期望 : 成为第二个字符)您确定您的源代码中没有零宽度组合字符或其他类似的 Unicode 恶作剧吗? 来自that answer

    【讨论】:

    • OP 已经解释说他尝试将其作为文字 ('@') 并转义反斜杠。
    • 请再次阅读问题。我已经尝试过了,但没有运气。
    • 请提及您从哪里获得this
    • 我已经看过这个问题了。 : 不在第三位。
    • 好的,尝试创建空的consolse C#项目和新的空.txt文件并编写这段代码。它会工作吗?
    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2012-03-08
    相关资源
    最近更新 更多