/**
* 转换相对路径为绝对路径
*
* @param aPath
* @return
*/
public static String convertRelPath2AbsPath(String aPath) {
if (!aPath.contains("..")) {
return aPath;
}
if (aPath.startsWith("/")) {
aPath = aPath.substring(1);
}
StringBuilder sb = new StringBuilder();
String[] items = aPath.split("/");
if (items[0].equals("..") || items[1].equals("..")) {
return null;
}
List<String> itemList = new LinkedList<String>();
for (int j = 0; j < items.length; ++j) {
itemList.add(items[j]);
}
int i = 2;
while (true) {
if (itemList.get(i).equals("..") && (i + 1 != itemList.size())) {
itemList.set(i - 1, itemList.get(i + 1));
itemList.remove(i);
itemList.remove(i);
}
if (++i >= itemList.size()) {
if (itemList.get(i - 1).equals("..")) { // 处理最后一个是..的特殊情况
itemList.remove(i - 2);
itemList.remove(i - 2);
}
break;
}
}
for (int j = 0; j < itemList.size(); ++j) {
sb.append("/").append(itemList.get(j));
}
return sb.toString() + "/";
}
一个Java小程序
最新推荐文章于 2024-07-29 09:18:53 发布