Linux no such file or directiory ,文件存在但是报文件找不到 异常

1.背景

公司内的一款应用需要用到PDF文件下载的功能,PDF文件由zip包发给现场解压后放到指定目录下,并在配置文件中配置到相应的目录。

2.功能流程

后台数据库有张表配置了文件内的查询关键字,以及文件名信息,前端通过关键字模糊匹配后展示列表,用户在点击某个他想查看的PDF文件后,后台基于文件名以及配置中的文件所在路径信息,获取文件。

File pdf=new File(pdDownloadfPath);

3.现象

当时预生产环境某现场运维小强部署完后,通过前端点击下载发现报错文件不存在,但是文件在相关目录下明明白白清清楚楚的是在的,小强随即联系到了我。

4.排查

我的第一反应是不可能,文件路径搞错了吧--。--! 但是看着现场的错误截图以及文件所在位置,雀食没毛病。而后进行了如下3步常规排查操作:

1).排除文件损坏:文件拷贝到堡垒机后可以正常打开。
2).排除程序权限问题--> 运维现场截图上看到文件权限-rw-r--r--,用户组也没问题
3).通过unanme -a 排除架构问题:x86架构没错

4).磁盘,内存:充足。

这就奇怪了,到这里排查陷入了僵局,我和运维小哥一块丈二和尚摸不着头脑?

突然我想到了一种可能编码,会不会是编码不同? 让小哥通过locale命令查了下果然他们服务器上设置的编码是GBK的,但是我在将文件打包成ZIP的时候我的Mac是UTF-8的,并且启动脚本里设置了-Dfile.encoding=utf-8,简而言之是编码不匹配导致的,最终基于最小改动原则的解决方案是将ZIP在堡垒机里解压后通过FTP上传到服务器目录下,文件就可以正常下载了。

除了上面提到的解决方案,自然而然的会想到的另一种解决方案是改服务器编码,结果是运维小哥解压后的文件乱码了 -_-|| ,莫名其妙 估计是哪里操作不对,但是我在公司测试环境试了是可以的。

至此 排查结束就是编码不一致导致的锅。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值