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

如何用C#获取指定目录文件的完整路径以用于Zip压缩操作?

解决路径拼接与压缩文件创建的问题

原代码存在的问题

  • 变量名大小写不一致:filelist 和 fileList 拼写差异会导致编译错误
  • 代码逻辑错误:fullPathName 定义在 foreach 循环外部,无法访问循环内的 file 变量
  • 路径拼接方式不安全:直接用 + 拼接路径,若原路径末尾没有斜杠,会生成错误路径(比如C:\Desktop\Testingabc.txt)

正确实现方式

方式一:利用Directory.GetFiles返回的完整路径

Directory.GetFiles(path)本身就会返回每个文件的完整路径,我们只需要从中提取文件名作为压缩条目名称即可:

string path = @"C:\Desktop\Testing";
string[] fileList = Directory.GetFiles(path);
foreach (string fullPathName in fileList)
{
    // 获取不带路径的纯文件名
    string fileName = Path.GetFileName(fullPathName);
    // 调用创建压缩条目的方法
    addfile.CreateEntryFromFile(fullPathName, fileName);
}

方式二:手动安全拼接路径(适用于仅获取文件名列表的场景)

如果需要单独获取文件名再拼接路径,推荐使用Path.Combine方法,它会自动处理路径分隔符的问题:

string path = @"C:\Desktop\Testing";
// 获取目录下所有文件的纯文件名
string[] fileNames = Directory.EnumerateFiles(path)
                              .Select(filePath => Path.GetFileName(filePath))
                              .ToArray();

foreach (string fileName in fileNames)
{
    // 安全拼接完整路径
    string fullPathName = Path.Combine(path, fileName);
    addfile.CreateEntryFromFile(fullPathName, fileName);
}

关键说明

  • Path.Combine是C#中处理路径拼接的标准方法,能自动适配不同系统的路径分隔符,避免手动拼接导致的格式错误
  • Path.GetFileName用于从完整路径中提取纯文件名,正好匹配CreateEntryFromFile方法对第二个参数(压缩条目名称)的需求

内容的提问来源于stack exchange,提问作者Cheri Choc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:17