目录
1.Java里文件路径中正反斜杠 / 和 \
在使用Java中的解压缩流得时候,我发现创建完解压缩流之后ZipInputStream zis
我们知道在java看来,Zip压缩包里面的文件都是一个个ZipEntry对象
我们可以通过getNextEntry得到一个个ZipEntry对象,然后打印这些ZipEntry会很容易的看到
以下:
你会发现,很奇怪,他们之间的分隔符是 / 而不是我们常用的 \,但是我们能通过让ZipEntry作为File构造函数的形参,创建File对象。
这是因为
Java中的ZipEntry
对象可以看作是一个虚拟的文件或目录,可以通过它的路径和名称创建相应的File
对象。当你将ZipEntry
对象作为File
构造函数的参数传递时,Java会自动将路径中的斜杠字符/
替换为当前操作系统的文件分隔符。因此,即使ZipEntry
对象使用的是/
作为路径分隔符,在创建File
对象时也会自动转换为Windows下使用的\
作为路径分隔符。
实际上,我们也可以直接用 /来分割路径传给File构造函数,比如
File file = new File("C:/Users/username/Documents/example.txt");
这里其实就是Java的跨平台特性之一:处理文件路径的方式。Java会自动根据操作系统来确定使用哪种路径分隔符,因此使用斜杠“/”作为路径分隔符在不同的操作系统下都是可以的。这使得开发者可以在不同的平台上编写一致的代码,而无需担心文件路径的问题。
2. 文件夹路径末尾多\\不影响
①对于文件夹路径来说,在创建 File
对象时,结尾是否带上一个路径分隔符都是可以的,效果是一样的。所以 C:\\a\\
和 C:\\a
都表示文件夹 a
在 C
盘根目录下。
并且都能调用mkdirs()创建文件夹
②对于文件路径来说,路径分隔符不能省略,必须显式地指定分隔符,否则会被认为是非法路径。
但是如果你偏要这样使用,也能创建成功,下图:
但是,在不同的操作系统上可能会出现不同的行为。因此,为了编写可移植的代码,最好遵循操作系统的文件命名规则,避免在文件名中使用非法字符。这里成功的原因就是Windows系统(我是用的就是Windows系统)会自动忽略末尾的\所以没有产生错误,其他操作系统有可能会出错,所以尽量规范书写文件路径