Java文件路径问题小记(Windows & Linux)

前言

项目部署到生产环境(CentOS 7)后在运行过程中多了一些不明文件目录,如下图:
这里写图片描述

项目中有相关的下载功能,所以需要在服务器端创建目录,但很明显创建失败了,不难发现图中的路径分隔是和windows操作系统一致的反斜杠:
这里写图片描述

但很遗憾在Linux操作系统中路径之间的分隔符和windows是有区别的,下面具体看看这两种操作系统关于文件路径的区别以及我们如何在程序中拼接同时适配这两个操作系统的路径字符串。

windows与linux的路径分隔符

在Windows中我们拼接路径时是使用反斜杠的,而在java程序中需要使用双反斜杠,因为第一个反斜杠会被当作转义字符,如下图所示:
这里写图片描述

但是类似的程序放在Linux中就会报错,因为Linux中文件路径分隔符并不是反斜杠,而是正斜杠,如下图所示:
这里写图片描述

搞清楚了区别和问题,最后看看如何在程序中拼接路径以达到同时适配两种操作系统,其实也很简单,File类提供了一个静态常量——separator。

利用separator拼接目录

如题,那么我们将分隔符统统换成File.separator来分别看一下运行结果,首先是Windows系统:
这里写图片描述

如上图所示,可以清楚看到此时separator的值是双反斜杠,接下来再看一下Linux系统中的separator:
这里写图片描述

如上图所示,可以清楚的看到打印出的separator是正斜杠,通过separator即可完美的解决操作系统之间路径分隔符导致的问题,所以在java程序中尽量通过separator来取代斜杠来拼接路径字符串,尤其是应用服务器集群中既有windows服务器,又有linux服务器时,这一点尤为重要。

总结

简单记录一下这个Java文件路径相关的问题,希望对遇到同样问题的同学有所帮助,The End。

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows下,可以使用bat批处理脚本来批量检测远程端口。Telnet是一种远程终端连接服务,可以通过它来连接到远程主机的特定端口。以下是一个使用Telnet命令在批处理脚本中批量检测远程端口的例子: @echo off setlocal set ip_list=file_path\ip_list.txt set port=80 for /f %%i in (%ip_list%) do ( telnet %%i %port% | find "Connected" > nul if errorlevel 1 ( echo %%i:%port% is closed ) else ( echo %%i:%port% is open ) ) pause 在以上示例中,首先我们定义了要检测的IP列表文件路径,即ip_list.txt文件,然后我们设定了要检测的端口号,此处设定为80端口。接着使用for循环读取ip_list.txt文件中的每个IP地址。 在每次循环中,我们使用telnet命令连接到远程主机的指定端口。如果端口成功连接,则表示端口是开放的,telnet命令的输出会包含"Connected"关键字。我们使用find命令查找telnet命令的输出中是否包含"Connected"关键字。 如果find命令找到了"Connected"关键字,则说明端口是开放的,我们将显示"IP地址:端口号 is open"的消息。否则,即端口未连接,我们将显示"IP地址:端口号 is closed"的消息。 最后,我们使用pause命令来暂停脚本的运行,以便我们可以查看检测结果。 需要注意的是,Telnet命令在默认情况下可能未启用,需要手动在Windows设置中启用Telnet客户端功能。此外,Telnet命令在Windows 10及更高版本中可能已被淘汰,可以考虑使用其他工具如ncat或PowerShell来代替Telnet命令进行远程端口检测。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值