我有一个定义文件路径的字符串:
string duplicateFilePath = D:\User\Documents\processed\duplicate_files\file1.jpg;
我要将文件移动到这个位置,但有时候一个名字相同的文件都准备好了。在这种情况下,我想区分文件名。我有每个文件的crc值,所以我认为可能很好用于确保单个文件名。我可以创建:
string duplicateFilePathWithCrc = duplicateFilePath + "(" + crcValue + ")";
但是这给了:
D:\User\Documents\processed\duplicate_files\file1.jpg(crcvalue);
我需要:
D:\User\Documents\processed\duplicate_files\file1(crcvalue).jpg;
如何在文件扩展名之前将crcvalue放入字符串中,请记住文件路径中可能还有其他。文件扩展名有所不同?
答案 0 :(得分:30)
使用System.IO.Path类中的静态方法拆分文件名并在扩展名前添加后缀。
string AddSuffix(string filename, string suffix)
{
string fDir = Path.GetDirectoryName(filename);
string fName = Path.GetFileNameWithoutExtension(filename);
string fExt = Path.GetExtension(filename);
return Path.Combine(fDir, String.Concat(fName, suffix, fExt));
}
string newFilename = AddSuffix(filename, String.Format("({0})", crcValue));
答案 1 :(得分:4)
int value = 42;
var path = @"D:\User\Documents\processed\duplicate_files\file1.jpg";
var fileName = String.Format("{0}({1}){2}",
Path.GetFileNameWithoutExtension(path), value, Path.GetExtension(path));
var result = Path.Combine(Path.GetDirectoryName(path), fileName);
结果:
d:\用户\文件\处理\ duplicate_files \文件1(42).JPG
答案 2 :(得分:1)
像这样的东西
string duplicateFilePath = @"D:\User\Documents\processed\duplicate_files\file1.jpg";
string crcValue = "ABCDEF";
string folder = Path.GetDirectoryName(duplicateFilePath);
string filename = Path.GetFileNameWithoutExtension(duplicateFilePath);
string extension = Path.GetExtension(duplicateFilePath);
string newFilename = String.Format("{0}({1}){2}", filename, crcValue, extension);
string path_with_crc = Path.Combine(folder,newFilename );
答案 3 :(得分:0)
尝试使用Path
类(它在System.IO
命名空间中):
string duplicateFilePathWithCrc = Path.Combine(
Path.GetDirectoryName(duplicateFilePath),
string.Format(
"{0}({1}){2}",
Path.GetFileNameWithoutExtension(duplicateFilePath),
crcValue,
Path.GetExtension(duplicateFilePath)
)
);
答案 4 :(得分:0)
这也可以通过使用“替换”来实现:
using System.IO;
string duplicateFilePathWithCrc = duplicateFilePath.Replace(
Path.GetFileNameWithoutExtension(duplicateFilePath),
Path.GetFileNameWithoutExtension(duplicateFilePath + "(" + crcValue + ")"),
);