在文件扩展名C#之前将字符串插入文件路径字符串

时间:2014-06-23 13:43:56

标签: c#

我有一个定义文件路径的字符串:

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放入字符串中,请记住文件路径中可能还有其他。文件扩展名有所不同?

5 个答案:

答案 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 + ")"),
    );