为什么我会收到“给定路径格式不受支持”的错误?

4

我无法使用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 这可能是一个重复的问题,但很难确定是否是同样的问题。 - crashmstr
3
真的是代码吗?还是你发布了修改过的实际代码版本? - Matthew Watson
是的,它在那一行。该应用程序正在我的系统上运行,而不是任何服务器上。 - Thundrstorm
1
你是从其他地方复制/粘贴代码的吗?可能存在不可见的Unicode字符,尽管在十六进制查看器中检查时,你发布的文本似乎没有任何奇怪的东西。 - Panagiotis Kanavos
1
我无法重现这个问题(显然)。D:是CD还是映射的网络驱动器,或者是不允许重命名的其他类型?但即使是这样,也会返回不同的错误。 - Panagiotis Kanavos
显示剩余7条评论
3个回答

0

我在另一台电脑上尝试了这个,但还是不行!(出乎意料)。 我通过将“file.txt”移动到我的项目文件夹中解决了这个问题。 现在我正在使用

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

这绝对有效!虽然我说不上来它是如何回答了我的问题,但它真的对我有帮助。


这并没有回答问题。使用File.Move时,相对路径和绝对路径都有效。实际上,如果这个路径有效,那么意味着文件夹路径(D:\abc)中存在无效的Unicode字符,但文件名中不存在。 - Panagiotis Kanavos

0

为什么不利用:

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

-2

我自己尝试了一下,这些变量都可以工作:

        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花招吗? 来自于那个答案

1
OP已经解释过他尝试过将其作为文字('@')和转义反斜杠。 - LInsoDeTeh
请重新阅读问题。我已经试过了,但没有成功。 - Thundrstorm
3
请提及您从哪里获取了此内容的参考文献:this - BhushanK
我已经看到了这个问题。冒号不在第三个位置。 - Thundrstorm
好的,请尝试创建空的控制台 C# 项目和新的空 .txt 文件,并编写以下代码。它会正常工作吗? - Dima Adas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接