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

时间:2015-06-19 07:44:27

标签: c# file io

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

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

3 个答案:

答案 0 :(得分:8)

没有扩展与功能无关。 此外,重命名实际上只是一个移动"伪装",所以你想要做的是

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

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

答案 1 :(得分:1)

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

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

if(File.Exists(fullPath))
{

}

您还应该使用正确的框架方法来获取当前用户的桌面路径,请参阅How to get a path to the desktop for current user in C#?

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

string fullPath = Path.Combine(desktopPath, "test");

然后,您可以致电File.Move()重命名该文件,请参阅Rename a file in C#

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

答案 2 :(得分:0)

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

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似乎已经给出了答案。