【发布时间】:2015-04-01 17:01:27
【问题描述】:
我正在使用 Java 编写一个备份程序,我想根据源的绝对路径名将文件和目录保存到备份目标。
备份程序应该在不同的操作系统(Unix、Windows、Mac OS X)下工作,所以我需要转换源文件和目录的绝对路径名。
所以最后我想将绝对源路径转换为目标的常规子路径。让我举几个例子。
Unix
绝对源路径:/home/thomas/data
目标路径:/backup
有效目的地:/backup/home/thomas/data
Windows
绝对源路径:c:\Documents and Settings\thomas
目标路径:e:\backup
有效目的地:e:\backup\c\Documents and Settings\thomas
我可以使用字符串替换操作,但我预计会遇到一些麻烦并开始一个永无止境的更正故事。
我认为 Windows 环境需要特殊处理,因为前导驱动器号。在 *nix 下,我可以简单地连接两条路径。另请注意,源路径可能是 Windows 下的 UNC 路径,例如 \\share\data。
我四处搜索,发现了几个类似的问题,但没有一个回答我的问题(例如 Is there a Java utility which will convert a String path to use the correct File separator char? 或 Convert Windows-style path into Unix path)。
也许有人对我有一个想法或提示,或者知道一个已经在做我正在寻找的图书馆。
【问题讨论】:
-
你有没有尝试过?
-
嗯,可能我没看懂,但是你链接中的方法可以用来计算两条路径之间的“关系”。我喜欢的是基于绝对源路径和目标路径创建一个新的子路径。
标签: java absolute-path