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

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("dir1\\dir2", path.toString());

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

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

我们也可以使用文件类。

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

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

assertEquals("file1\\file2", 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连接工具。

Java File分隔符和 Path分隔符相关推荐

  1. java 文件分隔符_Java文件分隔符

    java.io.File类包含四个静态分隔符变量.在这里,我们将了解它们以及何时使用它. File.separator:平台相关的默认名称 - 分隔符是String.对于Windows,它是'\',对 ...

  2. java 中以||作为split分隔符正确的写法

    java 中以||作为split分隔符正确的写法 今天项目中需要在后台处理前台传递过来的拼接字符串,一开始写成str.split("\||"),得不到正确的结果,通过百度查找发现 ...

  3. Spark:java.net.URISyntaxException: Relative path in absolute URI: file:D:/XXX/SparkFaultBench/spark-

    错误: Spark:java.net.URISyntaxException: Relative path in absolute URI: file:D:/XXX/SparkFaultBench/sp ...

  4. java 千位分隔符_如何在Java中设置千位分隔符?

    问题 如何在Java中设置千位分隔符?我有BigDecimal的String表示,我想设置千位分隔符并返回String. #1 热门回答(180 赞) 你可以使用格式功能","; ...

  5. java file ip_java常用工具类 IP、File文件工具类

    本文实例为大家分享了java常用工具类的具体实现代码,供大家参考,具体内容如下 IP工具类 package com.jarvis.base.util; import java.io.IOExcepti ...

  6. java(File、IO流)

    IO流 一.IO流和File类 二 .File类 绝对路径和相对路径 file的成员方法 file的创建方法 file的删除方法 file的判断和获取功能 高级获取方法listFiles() file ...

  7. java file用法_Java File 类的使用方法详解(转)

    转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...

  8. 探究Java File类中list()、listFiles()的使用及区别,认识和使用匿名内部类

    转载自     探究Java File类中list().listFiles()的使用及区别,认识和使用匿名内部类 内容概要: 1.认识File类: 2.File的构造函数: 3.list()及其重载方 ...

  9. Java File类void deleteOnExit()方法(带示例)

    文件类void deleteOnExit() (File Class void deleteOnExit()) This method is available in package java.io. ...

  10. Java—File类详解及实践

    关注微信公众号:CodingTechWork,一起学习进步. File类介绍 File类概述   File类是java.io包下代表与平台无关的文件和目录.File可以新建.删除.重命名文件和目录,但 ...

最新文章

  1. TypeScript 从听说到入门(上篇)
  2. java语法基础(总结)
  3. javascript获取asp.net服务器端控件的值(2009-10-31 15:24:26)转载标签:杂谈 分类:技术分类
  4. VTK:PolyData之KochanekSplineDemo
  5. python函数模块讲解_课堂练习讲解_模块化函数封装
  6. 这4种钱没有也要借,不能等
  7. mysql5.045_数据库升级后goldengate报错,ORA-04045
  8. php 动态 常量,PHP中的动态常量?
  9. AZPR3.0的脱壳教程.
  10. Go语言实战+code
  11. 国家地表水水质自动监测站坐标每四小时数据(共1952个监测站,含省份、城市、河流、流域、断面名称、监测时间、水温、pH、DO、CODMn、TP、TN、NH3-N、浊度等)
  12. 苹果更新失败无法连接服务器未响应,iPhone 更新失败怎么办?更新 iOS 常见的错误代码及解决方法(二)...
  13. win10右键卡顿原因_win10右键新建卡顿怎么办
  14. 关于struts.xml的配置思考。
  15. 贪心背后的故事Codeforces 995B(Suit and Tie)
  16. C语言怎样判断乘法越界,c语言算术运算符越界问题解决方案
  17. java抓取网站数据
  18. 【2】非线性方程求解函数vpasolve
  19. “希希敬敬对”团队作业——敏捷冲刺7
  20. 网页在线自动回复客服源码

热门文章

  1. delphi 报错AV调试方法
  2. 在计算机硬盘使用前需要做的工作是,工作电脑的硬盘该如何保养
  3. 裸看美剧必备英文词汇文章索引
  4. echarts 实现区域划分 折线图
  5. 哔哩哔哩2019秋招笔试试题二——脸滚键盘
  6. 【转】国家集训队论文分类整理 作者:洪雁书
  7. 【Java面试题】java程序员面试宝典答案
  8. 红色小吃加盟网站源码 织梦dede模板[带手机版数据同步]
  9. Win实用 优秀 软件清单推荐
  10. 把妹需要勇敢,心有猛虎,细嗅蔷薇