com.google.common.io.Files.simplifyPath()方法的使用及代码示例

x33g5p2x  于2022-01-18 转载在 其他  
字(5.8k)|赞(0)|评价(0)|浏览(133)

本文整理了Java中com.google.common.io.Files.simplifyPath()方法的一些代码示例,展示了Files.simplifyPath()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Files.simplifyPath()方法的具体详情如下:
包路径:com.google.common.io.Files
类名称:Files
方法名:simplifyPath

Files.simplifyPath介绍

[英]Returns the lexically cleaned form of the path name, usually (but not always) equivalent to the original. The following heuristics are used:

  • empty string becomes .
  • . stays as .
  • fold out ./
  • fold out ../ when possible
  • collapse multiple slashes
  • delete trailing slashes (unless the path is just "/")

These heuristics do not always match the behavior of the filesystem. In particular, consider the path a/../b, which simplifyPath will change to b. If a is a symlink to x, a/../b may refer to a sibling of x, rather than the sibling of a referred to by b.
[中]返回路径名的词汇清理形式,通常(但不总是)与原始路径名等效。使用以下试探法:
*空字符串变为空字符串。

  • . 保持原样。
    *折叠起来/
    *折叠起来可能的话
    *折叠多个斜杠
    *删除尾部斜杠(除非路径仅为“/”)
    这些启发式方法并不总是与文件系统的行为相匹配。特别地,考虑路径A/…b、 哪个路径将更改为b。如果a是指向x的符号链接,则a//b可能指的是x的兄弟姐妹,而不是b所指的a的兄弟姐妹。

代码示例

代码示例来源:origin: google/guava

public void testMadbotsBug() {
 assertEquals("../this", simplifyPath("../this"));
 assertEquals("../this/is/ok", simplifyPath("../this/is/ok"));
 assertEquals("../ok", simplifyPath("../this/../ok"));
}

代码示例来源:origin: google/guava

public void test716() {
 assertEquals("b", simplifyPath("./b"));
 assertEquals("b", simplifyPath("./b/."));
 assertEquals("b", simplifyPath("././b/./."));
 assertEquals("b", simplifyPath("././b"));
 assertEquals("a/b", simplifyPath("./a/b"));
}

代码示例来源:origin: google/guava

public void testSimplifyDotDots() {
 assertEquals("../..", simplifyPath("a/../../.."));
 assertEquals("../../..", simplifyPath("a/../../../.."));
}

代码示例来源:origin: google/guava

/** http://gbiv.com/protocols/uri/rfc/rfc2396.html#rfc.section.C.2 */
public void testRfc2396Abnormal() {
 assertEquals("/a/b/c/g.", simplifyPath("/a/b/c/g."));
 assertEquals("/a/b/c/.g", simplifyPath("/a/b/c/.g"));
 assertEquals("/a/b/c/g..", simplifyPath("/a/b/c/g.."));
 assertEquals("/a/b/c/..g", simplifyPath("/a/b/c/..g"));
 assertEquals("/a/b/g", simplifyPath("/a/b/c/./../g"));
 assertEquals("/a/b/c/g", simplifyPath("/a/b/c/./g/."));
 assertEquals("/a/b/c/g/h", simplifyPath("/a/b/c/g/./h"));
 assertEquals("/a/b/c/h", simplifyPath("/a/b/c/g/../h"));
 assertEquals("/a/b/c/g;x=1/y", simplifyPath("/a/b/c/g;x=1/./y"));
 assertEquals("/a/b/c/y", simplifyPath("/a/b/c/g;x=1/../y"));
}

代码示例来源:origin: google/guava

public void testHiddenFiles() {
 assertEquals(".b", simplifyPath(".b"));
 assertEquals(".b", simplifyPath("./.b"));
 assertEquals(".metadata/b", simplifyPath(".metadata/b"));
 assertEquals(".metadata/b", simplifyPath("./.metadata/b"));
}

代码示例来源:origin: google/guava

public void testMultipleDotFilenames() {
 assertEquals("..a", simplifyPath("..a"));
 assertEquals("/..a", simplifyPath("/..a"));
 assertEquals("/..a/..b", simplifyPath("/..a/..b"));
 assertEquals("/.....a/..b", simplifyPath("/.....a/..b"));
 assertEquals("..../....", simplifyPath("..../...."));
 assertEquals("..a../..b..", simplifyPath("..a../..b.."));
}

代码示例来源:origin: google/guava

public void test705() {
 assertEquals("../b", simplifyPath("x/../../b"));
 assertEquals("b", simplifyPath("x/../b"));
}

代码示例来源:origin: google/guava

public void testInitialSlashDot() {
 assertEquals("/a", simplifyPath("/./a"));
 assertEquals("/.a", simplifyPath("/.a/a/.."));
}

代码示例来源:origin: google/guava

public void testSimplifyDotDotSlash() {
 assertEquals("..", simplifyPath("../"));
 assertEquals("..", simplifyPath("a/../.."));
 assertEquals("..", simplifyPath("a/../../"));
}

代码示例来源:origin: google/guava

public void testSimplify5() {
 assertEquals("/a/b", simplifyPath("/a//b"));
}

代码示例来源:origin: google/guava

public void testSlashDot() {
 assertEquals("/", simplifyPath("/."));
}

代码示例来源:origin: google/guava

public void testSimplifyRootedDotDots() {
 assertEquals("/", simplifyPath("/../../.."));
 assertEquals("/", simplifyPath("/../../../"));
}

代码示例来源:origin: google/guava

public void testConsecutiveParentsAfterPresent() {
 assertEquals("../..", simplifyPath("./../../"));
 assertEquals("../..", simplifyPath("./.././../"));
}

代码示例来源:origin: google/guava

public void testSimplify7() {
 assertEquals("/", simplifyPath("/.."));
}

代码示例来源:origin: google/guava

public void testSimplify8() {
 assertEquals("/", simplifyPath("/././././"));
}

代码示例来源:origin: google/guava

public void testSimplifyDotDot() {
 assertEquals("..", simplifyPath(".."));
}

代码示例来源:origin: google/guava

public void testInitialSlashDotDot() {
 assertEquals("/c", simplifyPath("/../c"));
}

代码示例来源:origin: google/guava

public void testSimplify6() {
 assertEquals("/a/b", simplifyPath("//a//b/"));
}

代码示例来源:origin: google/guava

public void testSimplify12() {
 assertEquals("/x", simplifyPath("//a//../x//"));
}

代码示例来源:origin: google/guava

private void doExtensiveTest(String resourceName) throws IOException {
  Splitter splitter = Splitter.on(CharMatcher.whitespace());
  URL url = getClass().getResource(resourceName);
  for (String line : Resources.readLines(url, UTF_8)) {
   Iterator<String> iterator = splitter.split(line).iterator();
   String input = iterator.next();
   String expectedOutput = iterator.next();
   assertFalse(iterator.hasNext());
   assertEquals(expectedOutput, simplifyPath(input));
  }
 }
}

相关文章