本篇讲述java编程中,怎样解决跨平台时,因不同系统中分隔符不同导致的文件或路径找不到的问题
首先来看两个例子:
一、linux系统和windows系统中的文件路径:
Linux系统:
Windows系统:
可以看到Linux系统中,路径中的文件名分隔符是"/",而Windows中是"\"
二、linux系统和windows系统中的path路径:
Linux系统:
.:%JAVA_HOME%\lib:%JAVA_HOME%\lib\tools.jar:%JAVA_HOME%\jre\lib\rt.jar:
Windows系统:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar;
同样,可以看到Linux系统中,path间的分隔符是":"(冒号),而Windows中是";"(分号)
因为分隔符的不同,我们在编程时就不能硬性制定文件路径或path之间的分隔符,因为这会导致跨平台时出现找不到文件或路径的错误,
在java中是这样解决的,jdk中有对应的方法,可以根据当前系统类型动态地获取文件或path的分隔符,下面是使用方法及源码中的相关描述:
一、获取文件路径中的文件名分隔符:
File.separator;
下面开始追踪源码:
第一步:
系统相关的默认名称分隔符。为了方便它被表示为一个字符串,该字符串只包含一个字符,即separatorChar
第二步:
系统相关的默认名称分隔符,这个字段被初始化为包含系统属性file.separator值的第一个字符,在UNIX系统中是”/”,在Windows系统中是”\”
第三步:
FileSystem对象表示当前平台的本地文件系统
第四步:
返回本地文件系统的名称分隔符
二、获取path中的分隔符:
File.pathSeparator
第一步:
系统相关的路径分隔符,为了方便被表示为一个字符串,这个字符串是一个单独的字符,即pathSeparatorChar
第二步:
系统相关的路径分隔符。这个字段被初始化为系统属性path.separator值的第一个字符,这个字符被用来分隔以列表形式给定的文件序列的文件名称,
在UNIX系统中是冒号(:),在Windows系统中是分号(;)
第三步:
FileSystem对象表示当前平台的本地文件系统
第四步:
返回本地文件系统的路径分隔符
所以在java编程中,遇到文件和path等操作时,为了跨平台时不引起因分隔符导致的错误,就要调用这两个方法来进行文件路径或path的拼接。
本系列为java编程相关问题,未完待续......