0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用正确的文件和路径分隔符

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-08 16:19 次阅读

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

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

在本文中,我们将了解如何编写代码来使用正确的文件和路径分隔符。

2.文件分隔符

文件分隔符是用来分隔构成特定位置路径的目录名的字符。

1.获取文件分隔符

在Java中,有几种方法可以获得文件分隔符。

我们可以用File.separator来获取String的分隔符。

String fileSeparator = File.separator;

我们也可以用File.separatorChar获得这个分隔符的字符。

char fileSeparatorChar = File.separatorChar;

从Java 7开始,我们也可以使用 文件系统

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

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

2.构造一个文件路径

Java提供了一些方法来从目录列表中构建文件路径。

这里,我们使用Paths类。

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

让我们在Microsoft Windows上测试一下。

assertEquals("dir1dir2", path.toString());

同样,我们也可以在Linux或Mac上测试它。

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

我们也可以使用文件类。

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

让我们在Microsoft Windows上测试一下。

assertEquals("file1ile2", file.toString());

同样,我们也可以在Linux或Mac上测试它。

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

正如我们所看到的,我们可以只提供路径字符串来构建一个文件路径---我们不需要明确地包括一个文件分隔符。

3.路径分隔符

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

3.1.获取路径分隔符

我们可以用File.pathSeparator来获取路径分隔符的 String

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"));

总结

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

我们看到了如何使用内置类PathFile来构造文件路径,我们还看到了如何获得必要的分隔符来使用String连接工具。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文件
    +关注

    关注

    1

    文章

    561

    浏览量

    24692
  • 函数
    +关注

    关注

    3

    文章

    4303

    浏览量

    62411
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68324
  • 应用程序
    +关注

    关注

    37

    文章

    3240

    浏览量

    57594
收藏 人收藏

    评论

    相关推荐

    c语言读写表格(csv)文件 读取csv文件示例

    ,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表
    的头像 发表于 06-08 09:22 6409次阅读
    c语言读写表格(csv)<b class='flag-5'>文件</b>  读取csv<b class='flag-5'>文件</b>示例

    JAVA语言的标识、注释和分隔符

    JAVA语言的标识、注释和分隔符 3.2.1 标识程序中要用到许多名字,诸如类、属性、方法的名字。标识就是用来标记它们的名字。Java标识
    发表于 12-06 00:21

    怎么按分隔符来解析字符串

    字符串里的内容是1,2,3,4我想按分隔符来解析它解析结果是
    发表于 03-19 10:33

    路径问题

    :文件未找到。文件可能被移动或删除,或文件路径的格式可能不符合操作系统。例如,在Windows、Mac OS X和Linux中分别使用“\”、“:”和“/”作为
    发表于 06-27 10:05

    串口连接中怎么设置分隔符

    串口配置中有波特率等等,但是没有分隔符,但是我需要设置分隔符,我需要怎么做?
    发表于 07-23 09:41

    急求,电子文件表格读取的分隔符能不能设成单个或者多个空格这个条件?

    新手有几个问题想请教1.大量数据读取,电子文件表格读取和文本文件读取哪一个效率高?2.电子表格文件读取 其中的分隔符 能不能设置成 单个或者多个空格这个条件?
    发表于 08-06 18:34

    Labview中写入带分隔符的电子表格输入带E的字符串,格式会转换成数字

    `Labview中写入带分隔符的电子表格输入带数字后带E的字符串,格式会转换成数字。EXCLE中我设置成文本显示也是一样,我是想输入字符串198E5,EXCLE中显示的就是198E5,求指教,感谢!`
    发表于 09-21 15:11

    Virtex 5中分隔符的实例化

    这封邮件是关于Virtex 5中分隔符的实例化.Virtex 5中没有用于分割的Coregen组件。在VrtE 5 ISE项目中实例化了Virtex 4 Coregen分频器。我使用的是ISE版本
    发表于 09-28 11:35

    LabVIEW2018 连续写入文件(带分隔符

    此示例演示如何将数据连续写入文件。vi每秒生成一个0至100的随机数,直到停止vi。波形图显示随机数和用户定义的限制。如果随机数超过限制,超过限定灯亮起。生成每个数字后,条目、日期、时间(包括秒)、数字和一条描述数字是“低于”还是“超过”预设限制的单字消息将以(制表
    发表于 06-14 16:05

    E4438C波形下载出现“-103,无效分隔符

    大家好,我一直在尝试通过局域网将IQ数据下载到E4438C,但我得到了“-103,无效分隔符”Eror。我找不到代码中的错误。任何帮助,将不胜感激。我附上了我的代码.RegardsCengiz
    发表于 07-29 09:38

    为什么使用读取带分隔符电子表格VI 读取excel文件,图像不太对呢?

    我想读取excel表格,然后将这个数据输出至波形图, 用的是读取带分隔符电子表格VI , 请问为什么结果却是这样,这个具体怎么改正呢,跪谢!!!!
    发表于 04-19 17:46

    LABVIEW通过串口收到无分隔符号的数据怎么处理

    LABVIEW通过串口收到无分隔符号的数据怎么处理成一维数组。
    发表于 04-21 19:48

    Labview 用写入带分隔符电子表格记录数据被覆盖

    Labview 用写入带分隔符电子表格记录数据被覆盖,在网上查资料说要添加“换行”不知道怎么加,请各位大佬给指点下,感谢
    发表于 04-11 15:51

    基于MM32F5270开发板的DAC输出电压试用过程

    VCC电压为:------------------------------分隔符
    发表于 09-05 16:22

    不同的系统中路径分隔符分析

    在不同的系统中,路径分隔符不同,故需要做出判断,并切换分隔符; String类中replaceAll方法如下: String.replaceAll(String regex,String
    的头像 发表于 12-07 17:11 4276次阅读