拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java文件分隔符与文件路径分隔符

Java文件分隔符与文件路径分隔符

白鹭 - 2021-11-24 637 0 0

1.概述

不同的操作系统使用不同的字符作为文件和路径分隔符。当我们的应用程序必须在多个平台上运行时,我们需要正确处理它们。

Java帮助我们选择合适的分隔符,并提供函数来帮助我们创建可在主机操作系统上运行的路径。

在这个简短的教程中,我们将了解如何编写代码以使用正确的文件和路径分隔符。

2.文件分隔符File Separator

文件分隔符是用于分隔组成到特定位置路径的目录名称的字符。

2.1。获取文件分隔符File Separator

有几种方法可以获取Java中的文件分隔符。

我们可以使用File.separator将分隔符作为String File.separator

String fileSeparator = File.separator;

我们也可以使用File.separatorChar将此分隔符作为char File.separatorChar

char fileSeparatorChar = File.separatorChar;

从Java 7开始,我们还可以使用FileSystems

String fileSeparator = FileSystems.getDefault().getSeparator();

输出将取决于主机操作系统。在Windows和/ macOS和基于Unix的操作系统上,文件分隔符为\

2.2。构造文件路径File Path

Java提供了几种从其目录列表构造文件路径的方法。

在这里,我们使用Paths类:

Path path = Paths.get("dir1", "dir2");

让我们在Microsoft Windows上对其进行测试:

assertEquals("dir1\\dir2", path.toString());

同样,我们可以在Linux或Mac上对其进行测试:

assertEquals("dir1/dir2", path.toString());

我们还可以使用File类:

File file = new File("file1", "file2");

让我们在Microsoft Windows上对其进行测试:

assertEquals("file1\\file2", file.toString());

同样,我们可以在Linux或Mac上对其进行测试:

assertEquals("file1/file2", file.toString());

如我们所见,我们仅提供路径字符串即可构建文件路径-我们不需要显式包括文件分隔符。

3. 路径分隔符Path Separator

路径分隔符是操作系统通常用来分隔路径列表中各个路径的字符。

3.1。获取路径分隔符pathSeparator

我们可以使用File.pathSeparator将路径分隔符作为String File.pathSeparator

String pathSeparator = File.pathSeparator;

我们还可以将路径分隔符作为char

char pathSeparatorChar = File.pathSeparatorChar;

这两个示例都返回路径分隔符。在Windows上是分号(; )在基于Mac和Unix的操作系统上是冒号(:)。

3.2 构造文件路径

我们可以使用分隔符作为分隔符,将文件路径构造为String

让我们尝试一下String.join方法:

String[] pathNames = { "path1", "path2", "path3" };

 String path = String.join(File.pathSeparator, pathNames);

在这里,我们在Windows上测试代码:

assertEquals("path1;path2;path3", path);

并且文件路径在Linux或Mac上看起来会有所不同:

assertEquals("path1:path2:path3", path);

同样,我们可以使用StringJoiner类:

public static StringJoiner buildPathUsingStringJoiner(String path1, String path2) {

 StringJoiner joiner = new StringJoiner(File.pathSeparator);

 joiner.add(path1);

 joiner.add(path2);

 return joiner;

 }

让我们在Microsoft Windows上测试我们的代码:

assertEquals("path1;path2", buildPathUsingStringJoiner("path1", "path2"));

在Mac或Unix上,其行为将有所不同:

assertEquals("path1:path2", buildPathUsingStringJoiner("path1", "path2"));

4。结论

在这篇简短的文章中,我们学习了如何使用特定于系统的文件分隔符构造路径,以便我们的代码可以在多个操作系统上工作。

我们看到了如何使用内置类PathFile来构造文件路径,并且看到了如何获取必要的分隔符以与String串联实用程序一起使用。

与往常一样,示例代码可在GitHub上找到

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *