如何在 .NET 中获取绝对或标准化文件路径?

2023-12-12

如何以最小的努力(如果可能的话,使用一些现有的设施)转换路径,例如c:\aaa\bbb\..\ccc to c:\aaa\ccc?


我会这样写:

public static string NormalizePath(string path)
{
    return Path.GetFullPath(new Uri(path).LocalPath)
               .TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
               .ToUpperInvariant();
}

这应该可以处理一些场景,例如

  1. uri 和其中潜在的转义字符,例如

    文件:///C:/Test%20Project.exe -> C:\TEST PROJECT.EXE

  2. 由点指定的路径段,表示当前目录或父目录

    c:\aaa\bbb\..\ccc -> C:\AAA\CCC

  3. 波形符缩短(长)路径

    C:\Progra~1\ -> C:\程序文件

  4. 目录分隔符不一致

    C:/Documents\abc.txt -> C:\DOCUMENTS\ABC.TXT

除此之外,它可以忽略大小写、尾随\目录分隔符等

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 .NET 中获取绝对或标准化文件路径? 的相关文章

  • 如何将字节块读入结构体

    我有一个需要处理的资源文件 它包含一组文件 首先 资源文件列出了其中包含的所有文件 以及一些其他数据 例如在此结构中 struct FileEntry byte Value1 char Filename 12 byte Value2 byt
  • 有没有办法设置 log4net 内存附加程序可以包含的最大错误消息数?

    我想向根记录器添加一个内存附加程序 以便我可以连接到应用程序并获取最后 10 个事件 我只想保留最后 10 个 我担心这个附加程序会消耗太多内存 该应用程序设计为 24 7 运行 或者还有别的办法吗 您需要创建一个自定义附加程序来存储有限数
  • 元素属性语法和属性属性语法之间有语义差异吗?

    我认为元素属性语法和属性属性语法在语义上没有太大区别 但是 我发现一定有什么不同 例如 下面的例子只是演示了一个简单的触发器
  • 反序列化嵌套类时不需要 xmlns=''

    我在尝试在服务器上序列化类 将其发送到客户端并在目标上反序列化时遇到问题 在服务器上我有以下两个类 XmlRoot StatusUpdate public class GameStatusUpdate public GameStatusUp
  • 在 System.Xml.XPath 中启用 XPath2 查询(XPathException:无效令牌)

    Microsoft 的 System Xml XPath nuget package 可用于 NET 4 6 声称支持 XPath 1 0 和 2 0 德文档 https msdn microsoft com en us library s
  • 重写某些 .Net Framework 控件的绘制以更改其边框颜色?

    SCENARIO 我正在使用第三方 Windows 视觉主题 当我看到我的应用程序时 它看起来像这样 但是当我使用正常的Aero主题 它看起来到处都有可怕的白色边框 QUESTION 我知道应用程序中使用的配色方案取决于视觉风格 但是 我可
  • 强制 Mpeg2 解复用器使用 ffdshow 渲染 H 264 数字电视视频

    不幸的是 我花了很多时间尝试使 DirectShow 的 DTVViewer 示例正常工作 但没有成功 DVBT网络的视频格式是H264 我发现IntelliConnect行为IFilterGraph更喜欢使用 Mpeg2 视频格式 对于那
  • .NET 中严格浮点数学的库

    我有 Java 算法 计算及其单元测试 单元测试期望结果具有一定的精度 增量 现在我将算法移植到 NET 中 并希望使用相同的单元测试 我使用双数据类型 问题在于 Java 使用 strictfp 64 位 来执行 Math 类中的某些操作
  • 当用户打开文件时如何锁定对文件的访问?

    我正在编写一个 C NET 程序 该程序使用 XmlSerializer 对当前用户正在处理的项目与 XML 文件进行序列化和反序列化 这工作正常 但我试图找到一种方法来防止两个用户从网络驱动器打开同一个文件并让一个用户覆盖前一个用户的保存
  • .NET 内存不足故障排除

    在阅读了几篇有关 NET 技术中的内存的启发性文章后 Out of Memory 不是指物理内存 https learn microsoft com en us archive blogs ericlippert out of memory
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 空 catch 与 try-catch 语句中的“catch Exception”相同吗?

    try catch Exception 我可以写吗 try catch 这在 C NET 3 5 中可以吗 代码看起来更好 但我不知道是否相同 他们是not一样的 catch Exception 将仅捕获托管异常 catch 也会捕获非 C
  • 忽略正则表达式匹配的空格

    我需要匹配 8 个或更多数字 其序列可以包含空格 例如 以下所有内容都是有效匹配 12345678 1 2345678 12 3 45678 1234 5678 12 34567 8 1 2 3 4 5 6 7 8 此刻我有 d 8 但这只
  • 有条件地忽略属性序列化

    我有一个 Asp Net WebApi 项目 我想返回 Json 格式的产品列表和一个特定产品 这是我的产品型号 public class Product public int Id get set public string ShortS
  • 如何将位写入文件?

    如何使用 c net 将位 而不是字节 写入文件 我很坚持它 Edit 我正在寻找一种不同的方法 将每 8 位写为一个字节 一次可以写入的最小数据量是一个字节 如果您需要写入单独的位值 例如 二进制格式需要 1 位标志 3 位整数和 4 位
  • Windows 每秒进行一次线程切换的频率是多少? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Windows 通常 每秒进行一次线
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime

随机推荐

  • 在 iOS 中更新/修改地址簿联系人后的通知

    iOS 更新或更改通讯录信息后是否有通知 Use ABAddressBookRegisterExternalChangeCallback收听地址簿中的更新 您还可以收听 ABCDataBaseChangedExternallyNotific
  • 为什么 UITextField 在将自身设置为 delegate 时会锁定

    我有一个扩展 UITextfield 的类 我还将相同的类设置为它自己的委托 因此当选择文本字段时我可以更改背景颜色 一旦我选择文本字段并输入几个字母 应用程序就会锁定并崩溃 这是我的 m 文件的样子 implementation MyTe
  • 如何按需启动/停止Delphi监控线程?

    我一直在寻找一种方法来监视 Delphi 中的特定注册表更改 找一个solution在 about com 上 procedure TRegMonitorThread Execute begin InitThread method omit
  • dword ptr 和 dword ptr:es 之间的区别

    我只是在 VS2010 中检查我的 C 程序的反汇编 这里是 int main 00B613A0 push ebp 00B613A1 mov ebp esp 00B613A3 sub esp 0D4h 00B613A9 push ebx 0
  • iphone如何处理按键事件

    你好 我正在开发 iphone 应用程序 并且想要处理 iphone 中的键盘事件 在Mac中 有一个类NSEvent可以处理键盘和鼠标事件 而在ios iphone ipad 中 NSEvent的对应类是UIEvent 它只处理触摸事件
  • 保留换行符的 C++ 预处理器字符串化?

    我需要记录 出于审计 记录目的 在我的代码中传递的 lambda 函数的代码 当然 lambda对象也需要保存 所以我想出了一个宏观的解决方案 如下 define LAMBDA AND STRING lambda lambda lambda
  • Android 互联网权限被忽略

    我有一个需要互联网许可的应用程序 但它似乎不适合我 I added
  • 相似度-抛光和包装

    我在用着Ploeh SemanticComparison s Likeness作为有效表达映射过程的预期输出的一种方式 如中所述Mark Seemann 在 PluralSight 上发表的优秀高级单元测试课程 我正在测试一些数据是否已正确
  • 斯坦福-NER定制对软件编程关键字进行分类

    我是 NLP 新手 我使用斯坦福 NER 工具对一些随机文本进行分类 以提取软件编程中使用的特殊关键字 问题是 我不知道如何更改斯坦福 NER 中的分类器和文本注释器来识别软件编程关键字 例如 today Java used in diff
  • 为什么包含空字符串的列表为真?

    我在工作中发现了一些返回包含空字符串的列表的内容 为了简单起见 我创建了一个示例 big ol trickster if big ol trickster foo else print You can t trick me 而且这个条件每次
  • 如何在 Docker Compose V2 中扩展服务?

    我有三个不同的项目 ProjectS 依赖于 Project 而 Project 又依赖于 Project 假设您只想开发 ProjectC 因此我想仅在运行时使用具有一个容器的设置 项目需要项目 所以我必须定义一个带有两个图像的docke
  • 获取 vcproj 文件中 $(ProjectDir)、$(SolutionDir) 的值

    是否可以得到的值 ProjectDir or SolutionDir 在 Visual Studio 之外以编程方式 我的情况是我需要将 vcproj 文件作为文本文件读取并获取其属性 如输出目录等 问题是某些属性包含环境变量 如 Solu
  • 具有动态大小的 Fortran 数组,与 R 函数 seq() 一样简单

    我想编写像 R 函数 seq 一样工作的 Fortran 代码 例如 x lt seq 0 1 0 1 将给出向量 x lt c 0 0 1 0 2 1 我将运行几次模拟 序列的长度将发生变化 在 R 中 这很容易完成 只需改变 seq 中
  • 如何确保仅当单击按钮时它才重定向到特定网址 javascript

    所以我以某种方式构建了它将总计从结账页面转移到索引页面 在本例中是付款页面 但这是一个问题 当进入结帐页面时它会自动转到索引页面 但我希望它仅在按钮打开时才这样做单击 我尝试使用 addEventListener 执行某些操作 但它只是在i
  • 粘性表格标题

    我正在用这个plugin在我的中实现粘性表头Table 实际上 就像在插件示例和我的页面中一样 表头在表中的最后一行稍后消失 我希望我的表头在最后一行消失时消失 有机会实现这一点吗 这是一个工作示例 fiddle 我所改变的只是这一行的结尾
  • 简单赋值时不输出期望值

    当我将一些值分配给具有四位的变量时 当我简单地输出该值时 我会得到意想不到的结果 我以前从未见过这个 想知道我是否在语法上做错了什么 module main reg 3 0 x initial begin monitor b x x 001
  • Boot2Docker(在 Windows 上)使用共享文件夹运行 Mongo(不支持此文件系统)

    我正在尝试使用 Boot2Docker 在 Windows 上使用共享文件夹启动 Mongo 容器 开始使用时run it v c Users 310145787 Desktop mongo data db mongo我在容器内收到一条警告
  • 谷歌数据流写入bigquery表性能

    我将处理数据和输出的性能与 Bigquery 表和文件进行了比较 差异显着 输入 约 600 个文件中的 150 万条记录 转换 构造 转换每个记录中的一些字段 构造一个键并发出键 值对 最终每个键的记录都会到达一个目标 一个文件或一张表
  • 将元素从一个 div 内部拖动到另一个 div 中

    我希望能够将一个元素从一个 div 内部拖动到另一个 div 中 jQuery用户界面可拖动的 and 可丢弃的 但他们似乎只是在视觉上操纵元素 使用position relative而不通过 DOM 移动它们 如果可以的话 我似乎找不到例
  • 如何在 .NET 中获取绝对或标准化文件路径?

    如何以最小的努力 如果可能的话 使用一些现有的设施 转换路径 例如c aaa bbb ccc to c aaa ccc 我会这样写 public static string NormalizePath string path return