Spring Shell中如何将文件路径正确传入方法?
问题描述
在使用Spring Shell的@ShellMethod接收文件路径参数时,用户输入Windows格式路径(如C:\test.txt)后,方法内接收到的路径丢失了反斜杠,变成c:test.txt。相关代码如下:
@ShellMethod(value = "Command import your frequency into database. You need pass path to the file .xlsx") public String fileRead(@ShellOption(defaultValue = "") String path) throws FileNotFoundException { if (path.isEmpty() && !path.equals("")) { return "You need to pass path to the file"; } return "Successfully read"; }
解决方案
1. 输入时转义反斜杠
Shell中反斜杠\是转义字符,直接输入会被解析忽略。输入路径时用双反斜杠\\表示单个反斜杠即可:
fileRead --path C:\\test.txt
2. 使用正斜杠代替反斜杠
Java支持将正斜杠/作为Windows系统的路径分隔符,直接输入带正斜杠的路径:
fileRead --path C:/test.txt
3. 用引号包裹路径
将路径放在双引号或单引号内,Shell会保留内部的反斜杠:
fileRead --path "C:\test.txt"
额外提示:修正参数校验逻辑
代码中if (path.isEmpty() && !path.equals(""))的条件逻辑错误,isEmpty()和equals("")是等价的,该条件永远不会成立。可以修改为:
if (path.isEmpty()) { return "You need to pass path to the file"; }
内容的提问来源于stack exchange,提问作者Sashko1121
相关产品推荐
相关产品推荐

