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

.NET 2与.NET 4.8中FileInfo行为差异及兼容配置咨询

.NET 2迁移至.NET 4.8的路径API行为问题解答

一、FileInfo.FullName行为差异的配置解决方案

从.NET 4.0开始,路径处理逻辑发生变更:默认保留路径组件(如文件夹、文件名)中的末尾空格,而.NET 2会自动截断这些空格。要让.NET 4.8与.NET 2表现一致,可通过配置文件启用遗留路径处理模式:

在app.config或web.config的<runtime>节点下添加以下配置:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
  </runtime>
</configuration>

启用该开关后,.NET会采用.NET 2-3.5的路径处理逻辑,new FileInfo("C:\\a \\b").FullName将返回"C:\\a\\b",与.NET 2行为一致。

二、Directory.CreateDirectory忽略末尾空格的行为说明

这个行为并非.NET版本差异导致,而是Windows文件系统的固有规则:Windows不允许文件夹或文件名以空格(或句点)结尾,当调用Directory.CreateDirectory传入带末尾空格的路径时,底层会自动截断这些末尾空格,实际创建的目录名称不包含空格。

相关文档参考内容:

  • .NET官方文档对Directory.CreateDirectory的说明:方法会对输入路径进行规范化处理,其中包括移除路径末尾的空格、句点等Windows文件系统不允许的字符。
  • Windows文件系统命名规则:文件名/文件夹名不能以空格或句点结尾,系统在处理这类名称时会自动截断末尾的无效字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:12:39