You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#技术求助:如何让新文件沿用源文件的文件名

解决方案:自动复用源文件名实现多文件复制

你已经搞定了内容复制和文件传输的核心工作,剩下的自动获取源文件名其实很简单,用.NET里的Path类就能轻松解决,完全不用硬编码!

核心思路

  1. 从源文件的完整路径中提取纯文件名(含扩展名)
  2. 用提取到的文件名拼接目标文件夹路径,生成目标文件的完整路径
  3. 结合你已经在用的StreamReader/StreamWriter完成内容追加复制

完整代码示例

假设你用的是C#,这里给你一个可复用的方法,支持处理单个或多个文件:

using System.IO;

public void CopyFileWithSameName(string sourceFilePath, string targetFolderPath)
{
    // 1. 提取源文件的文件名(含扩展名)
    string fileName = Path.GetFileName(sourceFilePath);
    
    // 2. 确保目标文件夹存在,不存在则创建
    if (!Directory.Exists(targetFolderPath))
    {
        Directory.CreateDirectory(targetFolderPath);
    }
    
    // 3. 拼接目标文件的完整路径
    string targetFilePath = Path.Combine(targetFolderPath, fileName);
    
    // 4. 用你熟悉的StreamReader/StreamWriter完成内容追加
    using (StreamReader reader = new StreamReader(sourceFilePath))
    using (StreamWriter writer = new StreamWriter(targetFilePath, append: true))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            writer.WriteLine(line);
        }
    }
}

批量处理多个文件的场景

如果要一次性处理Documents文件夹里的多个文件,你可以这样调用:

string sourceFolder = @"C:\Users\YourName\Documents";
string targetFolder = @"C:\Users\YourName\Downloads";

// 获取Documents文件夹下的所有文件(可按需过滤,比如只处理.txt文件)
string[] sourceFiles = Directory.GetFiles(sourceFolder);

foreach (string file in sourceFiles)
{
    CopyFileWithSameName(file, targetFolder);
}

关键细节说明

  • Path.GetFileName(sourceFilePath):不管源文件是绝对路径还是相对路径,都能准确提取出文件名.扩展名,比如从C:\Docs\report.pdf里拿到report.pdf
  • Path.Combine():自动适配不同系统的路径分隔符(Windows是\,Linux是/),避免手动拼接路径出错
  • using语句:自动释放流资源,处理多个文件时更安全,不会出现资源泄漏问题

这样一来,你就完全不需要硬编码任何文件名,不管处理多少个文件,都能自动在目标文件夹创建同名文件并追加内容啦!

内容的提问来源于stack exchange,提问作者I'm just a coder for fun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:45:59