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

不同的操作系统使用不同的字符作为文件和路径分隔符。当我们的应用程序需要在多个平台上运行时,我们需要正确处理这些问题。
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));总结在这篇短文中,我们学习了如何使用系统特定的文件分隔符来构建路径,这样我们的代码就可以在多个操作系统上工作。
我们看到了如何使用内置类path和file来构造文件路径,我们还看到了如何获得必要的分隔符来使用string连接工具。

小米汽车首个专利公开
振弦传感器信号转换器(VTI104_DIN)应用岩土工程监测
数字货币的诞生是仅仅干掉ATM机?
!供应 CHROMA2326 CHROMA2325 CHRO
封装技术对于微控制器小型化的重要性
如何使用正确的文件和路径分隔符
邀请函 | 瑞萨电子与您相约2023慕尼黑上海电子展
LLC推出具有先进诊断功能的双线垂直霍尔效应开关产品系列A1130、A1131和A1132
新型的超轻的太阳能电池可为智能手表而供电
远程预付费电能管理系统在星湖101广场的应用
CGH60060D L波段功率放大器
基于光的打印金属纳米结构的方法
惠普在2020年第三季度为医疗行业3D打印了超过400万个零件
奥拓智慧监控室解决方案将点燃LED CHINA 2020
中联通引入WCDMA版黑莓手机
基于DWC2的USB驱动开发-0x0A ULPI接口同步模式介绍
2021年的晶圆产能如何
在研研讨会 | @5/18 IGBT7 在工业及新能源的解决方案
滴滴上线试运营全程录音功能且为乘客提供一键报警功能
CCLINK IE转Profinet网关配置通讯配置案例