我没有收到错误,但扩展名没有更改。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string filename;
string[] filePaths = Directory.GetFiles(@"c:\Users\Desktop\test\");
Console.WriteLine("Directory consists of " + filePaths.Length + " files.");
foreach(string myfile in filePaths)
filename = Path.ChangeExtension(myfile, ".txt");
Console.ReadLine();
}
}
}
答案 0 :(得分:14)
Path.ChangeExtension
只返回带有新扩展名的字符串,它不会重命名文件本身。
您需要使用System.IO.File.Move(oldName, newName)
重命名实际文件,如下所示:
foreach (string myfile in filePaths)
{
filename = Path.ChangeExtension(myfile, ".txt");
System.IO.File.Move(myfile, filename);
}
答案 1 :(得分:2)
如果您想更改文件的扩展名,请致电File.Move()
。
答案 2 :(得分:1)
这只会更改路径的扩展名而不是文件的扩展名。
原因:由于调用了Path.ChangeExtension
的ChangeExtension。对于file,请使用System.IO. File
Class及其方法。
答案 3 :(得分:1)
答案 4 :(得分:0)
我认为这大致相当(正确)代码:
DirectoryInfo di = new DirectoryInfo(@"c:\Users\Desktop\test\");
foreach (FileInfo fi in di.GetFiles())
{
fi.MoveTo(fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length - 1) + ".txt"); // "test.bat" 8 - 3 - 1 = 4 "test" + ".txt" = "test.txt"
}
Console.WriteLine("Directory consists of " + di.GetFiles().Length + " files.");
Console.ReadLine();