创建File对象时,Java中文件路径的一些细节

                                目录

1.Java里文件路径中正反斜杠 / 和 \

2. 文件夹路径末尾多\\不影响

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 都表示文件夹 aC 盘根目录下。

并且都能调用mkdirs()创建文件夹

②对于文件路径来说,路径分隔符不能省略,必须显式地指定分隔符,否则会被认为是非法路径。

但是如果你偏要这样使用,也能创建成功,下图:

 

 但是,在不同的操作系统上可能会出现不同的行为。因此,为了编写可移植的代码,最好遵循操作系统的文件命名规则,避免在文件名中使用非法字符。这里成功的原因就是Windows系统(我是用的就是Windows系统)会自动忽略末尾的\所以没有产生错误,其他操作系统有可能会出错,所以尽量规范书写文件路径

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值