File.Exists 文件不存在 Or FileNotFoundException

本文记录了一个因隐藏字符导致的问题。最初遇到找不到文件的情况,经测试发现字符串中存在【@\‪‪‪】字符,通过Unicode编码转换,发现多了“‪‪‪”,该隐藏字符虽不可见,但影响目录正确识别,问题最终解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

标题警告,本文仅限走投无路,最终可能的一个问题导致。

最开始出现在找不到文件,测试发现:

 看起来毫无毛病

 

而后各种测试:

 注意看,第一行跟第三行一模一样

 

发现【@"‪‪‪】这两个字符有毒,如果这样替换第一行就会返回true:

 

 

调试看也毫无毛病:

 

然后就想到可能粘贴了看不到的字符:Unicode编码转换

多了‪‪‪

 

果然,多了“‪‪‪”,不过也不记得哪里粘贴来的了。我们查一下8234是什么: 

左往右嵌入?啥..

幽灵事件就这样解决了,”‪“虽然看不到,但也导致不能正确识别目录,这种问题不大可能会遇到,类似字符串都可能剪贴板粘贴到,记录下。

 

 

转载于:https://www.cnblogs.com/zlyxm/p/10948654.html

程序代码在哪里查看@RestController @RequestMapping("/common/file") @Slf4j public class CommonController { @Value("${file.path}") private String filePath; @PostMapping("/singleUploadFile") public Result singleUploadFile(@RequestParam(name = "file",required = true) MultipartFile file, HttpServletRequest request) { String fileName = ""; if (!file.isEmpty()) { try { //图片命名 // fileName = file.getOriginalFilename(); File newFile = new File(filePath); if (!newFile.exists()) { newFile.mkdirs(); } // 获取原始文件名 String originalFilename = file.getOriginalFilename(); // 获取文件扩展名 assert originalFilename != null; String fileExt = originalFilename.substring(originalFilename.lastIndexOf(".")); // 生成新的文件fileName = TimeUtil.dateRandom18()+"_"+originalFilename; File imageFile = new File(newFile,fileName); BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(imageFile)); out.write(file.getBytes()); out.flush(); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); return ResultUtil.error(-1,"路径为空"); } catch (IOException e) { e.printStackTrace(); log.info("上传底图接口/uploadBaseImage出现异常,异常信息如下====>{}",e.getMessage()); return ResultUtil.error(-1,"上传文件异常"); } } // return ResultUtil.success(1,"图片上传成功!","文件名称"+fileName+"==="+"文件路径==>/search/compare/"+ fileName); return ResultUtil.successForDataAndImage(1,"上传文件成功",fileName, IpUtils.getBaseUrl(request)); }
最新发布
03-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值