当前位置: 首页 > 面试题库 >

Java:如何使用nio Path标准化路径?

柳灿
2023-03-14
问题内容

真正令人高兴的事情之一java.io.File是它可以 将路径标准化可预测的格式

new File("/", inputPath).getPath() 始终返回已规范化相对路径的字符串,并且始终以可预测的路径分隔符开始和结束。

有没有办法用新的nio PathPathsclass 做到这一点?

(还请注意,我正在处理其他系统的抽象路径,这与任何本地文件系统无关)

我想要的行为的更多示例:

 - "/foo" -> "/foo"
 - "//foo/" -> "/foo"
 - "foo/" -> "/foo"
 - "foo/bar" -> "/foo/bar"
 - "foo/bar/../baz" -> "/foo/baz"
 - "foo//bar" -> "/foo/bar"

问题答案:

此代码有效:

public final class Foo
{
    private static final List<String> INPUTS = Arrays.asList(
        "/foo", "//foo", "foo/", "foo/bar", "foo/bar/../baz", "foo//bar"
    );

    public static void main(final String... args)
    {
        Path path;

        for (final String input: INPUTS) {
            path = Paths.get("/", input).normalize();
            System.out.printf("%s -> %s\n", input, path);
        }
    }
}

输出:

/foo -> /foo
//foo -> /foo
foo/ -> /foo
foo/bar -> /foo/bar
foo/bar/../baz -> /foo/baz
foo//bar -> /foo/bar

注意,这不是便携式的。在Windows机器上将无法使用…

如果需要便携式解决方案,则可以使用memoryfilesystem,打开一个Unix文件系统并使用:

try (
    final FileSystem fs = MemoryFileSystem.newLinux().build();
) {
    // path operations here
}


 类似资料:
  • 问题内容: 我在这里很新,目前正在尝试使用Java计算标准偏差(我已经用谷歌搜索了哈哈),但是在使其正常工作方面存在很多问题 我有一个由用户输入的十个值,然后我必须计算到目前为止我所理解的标准偏差,这要归功于已经回答过的人们,我找到了数组的均值然后完成了计算 我已经将数据存储在10个值的数组中,但是我不太确定如何从数组中打印数据,然后进行计算而不必将输入代码存储在这里数据中,而这些数据我已经处理过

  • (还要注意,我处理的是其他系统的抽象路径,这与任何本地文件系统无关) 我想要的行为的进一步示例:

  • 您好,我正在尝试使用Apache Commons Math的标准偏差库。我无法导入该库,因为我在下载zip后找不到jar文件。我是否遗漏了太明显的内容?

  • 下面是我试图测试的一件简单的事情,mod操作或a AND one(假设幂为2)的更快速度是多少——这就是hashMap在内部所做的。这是拼写正确的“测试”吗?我必须承认,jmh的内部结构,以及在检查了所有样本(我认为是第三次)后编写正确的微基准测试,是一个相当大的挑战。:)

  • 问题内容: 我目前正在编写一个使用BufferedWriter生成多个日志文件的应用程序。但是,在调试时,我想写入System.out而不是文件。我认为我可以从以下方面进行更改: 至: 相对于: 但是,新选项无法正常工作。我如何只更改BufferedWriter构造函数内部的对象,以从文件重定向到标准输出。由于我将要写入多个日志文件,因此实际上无法使用System.out并将输出更改为文件。 问题

  • 前端标准化 本篇文章主要讲解什么是前后端分离,为什么要做前后端分离,还包括如何将前端工程化、前端编码约定、如何进行写RESTFul资源接口。 我们将前端分成两个工程: 1) WEB工程:主要提供RESTFul资源接口。 2) HTML工程:主要H5和JS,实现前端MVC分层,实现多端的能力。 前端标准化目标:代码可维护、可重构,组件化、可扩展【多端】