如何移动没有文件扩展名的文件? C#

if (File.Exists(@"C:\\Users" + Environment.UserName + "\\Desktop\\test")) { /\ this file has no file extension } 

文件test没有扩展名,我需要帮助才能将此文件移动或重命名为具有扩展名的文件

没有扩展与function无关。 此外,重命名实际上只是“伪装”的举动,所以你想要做的是

 File.Move(@"C:\Users\Username\Desktop\test", @"C:\Users\Username\Desktop\potato.txt") 

请记住字符串前面的@,因为你还没有逃过反斜杠。

无扩展文件没有什么特别之处。 您的代码已损坏,因为您使用字符串连接来构建路径,并且您正在混合逐字和常规字符串文字语法。 使用适当的框架方法: Path.Combine()

 string fullPath = Path.Combine(@"C:\Users", Environment.UserName, @"Desktop\test"); if(File.Exists(fullPath)) { } 

您还应该使用正确的框架方法来获取当前用户的桌面路径,请参阅如何在C#中为当前用户获取桌面路径? :

 string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); string fullPath = Path.Combine(desktopPath, "test"); 

然后,您可以调用File.Move()来重命名该文件,请参阅在C#中重命名文件 :

 if(File.Exists(fullPath)) { string newPath = fullPath + ".txt"; File.Move(fullPath, newPath); } 

您可以通过这种方式获取没有扩展名的所有文件:

 var files = Directory.EnumerateFiles(@"C:\Users\Username\Desktop\") .Where(fn => string.IsNullOrEmpty(Path.GetExtension(fn))); 

现在您可以循环它们并更改扩展名:

 foreach (string filePath in filPaths) { string fileWithNewExtension = Path.ChangeExtension(filePath, ".txt"); string newPath = Path.Combine(Path.GetDirectoryName(filePath), fileWithNewExtension); File.Move(filePath, newPath); } 

如您所见, Path -class是一个很好的帮助。


更新 :如果您只想更改已经知道的单个文件的扩展名,那么Dasanko似乎已经给出了答案。