我有一个程序需要在* nix和windows下运行。因为程序从文件中获取文件路径,所以问题是如何解决\
vs /
问题。
我目前的想法是放入一个正则表达式,根据我所使用的系统将错误的一个转换为正确的正则表达式。这将使任一类型在任一系统上都起作用。除now I have two problems这个事实外,有没有人看到任何其他问题?
(其他更好的解决方案非常受欢迎)
编辑:主要问题是让Windows路径在unix上运行而不是相反。
答案 0 :(得分:5)
在win32中也完全支持/。
答案 1 :(得分:1)
Windows通常会接受\或/,因此只要您完全控制文件名,标准化/可能会使您的问题变得更简单。
答案 2 :(得分:1)
您是否考虑过创建一个“文件管理器”类来处理所有文件路径问题?这样在您的邮件应用程序中,当您加载数据文件时,您可以调用这样的内容。
LoadApplicationData(FileManager.GetDataFilePath)
然后,您的文件管理器将检测它所在的环境并返回正确的文件路径选项。这样你也可以适应Win32与Unix的locatio标准(比如Program Files vs / usr或者其他)。
答案 3 :(得分:1)
请注意,当您考虑驱动器号(在Unix上没有模拟)和特殊的'forks'(MacOS pre-X术语 - 在Unix上同样没有模拟,虽然MacOS X有它们时 - Win32路径很复杂 - 惊喜,惊喜)可以提供。小心。
答案 4 :(得分:0)
为您的输入创建解析器,以创建表示目录的节点的树结构。然后你可以通过遍历树并编写你想要的任何分隔符或者选择做不同的事情来“保存”,例如检查目录是否存在或编写元文件。这实际上是我现在认为对我自己的应用程序有用的东西: - )
答案 5 :(得分:0)
你没有说你正在使用什么语言,所以我会自私地假设c / c ++。 boost,如果您愿意使用它,则会filesystem library。当然,如果你使用的是动态语言,FS抽象库可能已经存在(例如在perl中,File :: Spec非常标准)。
答案 6 :(得分:0)
您还没有告诉我们您正在阅读哪些文件。我将假设它们是配置文件。在这种情况下,有很多方法,恕我直言,正确的答案是设计你的程序,以避免操纵路径,如果可能的话。我在这里发布了一个答案:https://stackoverflow.com/a/40980510/2345997这是相关的。
<强>方法:强>