开发小细节(一不小心真会坑惨你)Windows和Linux的文件分隔符

Windows和Linux的文件分隔符、换行符问题

一般来说,大部分java开发是在Windows上开发,而生产环境下在Linux中运行

文件分隔符

Windows文件分隔符默认为"\",由于是转义符,通常开发中写为"\\",注意,Windows也可以识别"/"分隔符

Linux文件分隔符默认为"/",且只能识别这种

所以,在日常开发中文件分隔符建议写为"/",推荐使用File.separator或者File.separatorChar

编写创建文件的代码应注意一点,在windows系统中路径中使用“\”,同时需要再加一个转义的“\”,即形成了类似如下的路径:

  “path\\fileName”

  此种路径在windows系统没什么不对,但是到了linux系统会出现问题,在linux系统会生成名为“path\”的一个文件夹,当你再需要对创建的文件操作时,就会找不到文件。

解决时可以在路径中使用“/”,如:

  “path/fileName”

  但是某些时候,这样会在windows系统中出现问题,如:页面上点击按钮,action里在路径中用“/”来生成一个.csv文件,然后读出文件,在新窗口中打开。此时会出现在原窗口打开的现象,不会在新窗口中打开,如果在路径中用“\\”,可以解决这个问题,但是,运行在linux上会出现开始说的情况。

  最终的解决方法是:

在路径中加入的路径分隔符随系统改变,即用File.separator,可以解决掉此问题。

换行符

CR回车 LF换行

Windows/Dos CRLF \r\n

Linux/Unix LF \n

MacOS CR \r

java开发

Linux只能识别\n换行符,\r会被当做一个字符,而Windows下默认换行符为\r\n,但\n也可以。

所以当使用Java输出数据到文件中时推荐使用\n

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个示例的批处理程序,用于在 Windows 系统上定时从指定的 Linux 机器的指定目录下载文件: ```batch @echo off setlocal REM Linux 机器的 IP 地址和 SSH 用户名 set LINUX_IP=192.168.1.100 set SSH_USERNAME=username REM Linux 机器上的源文件路径 set SOURCE_DIR=/path/to/source/directory set FILENAME=file.txt REM Windows 系统上的目标目录 set TARGET_DIR=C:\path\to\target\directory REM 设置下载时间间隔(以毫秒为单位) set INTERVAL=600000 :START REM 使用 pscp 命令从 Linux 机器下载文件Windows 系统 pscp -pw password %SSH_USERNAME%@%LINUX_IP%:%SOURCE_DIR%\%FILENAME% %TARGET_DIR% REM 设置脚本休眠一段时间后再次执行(以毫秒为单位) ping -n %INTERVAL% 127.0.0.1 > nul goto START ``` 在这个批处理程序中,你需要将 `LINUX_IP` 替换为 Linux 机器的实际 IP 地址,`SSH_USERNAME` 替换为用于 SSH 登录 Linux 机器的用户名,`SOURCE_DIR` 替换为 Linux 机器上要下载文件的目录路径,`FILENAME` 替换为要下载的文件名,`TARGET_DIR` 替换为 Windows 系统上要保存文件的目标目录路径。 该程序使用了 `pscp` 命令,该命令是 PuTTY 工具包中的一个组件,用于通过 SSH 协议从远程机器复制文件到本地机器。 请确保在 Windows 系统上已安装 PuTTY 工具包,并将 `pscp` 命令添加到系统路径中,以便脚本正常运行。 此脚本会定时执行下载操作,指定的时间间隔由 `INTERVAL` 变量控制(以毫秒为单位)。你可以根据需要修改该值。 请注意,这只是一个示例脚本,具体的实施可能因操作系统版本、网络设置等而有所不同。在实际使用中,请根据你的环境和需求进行适当的修改和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值