怎么解决java的文件流中自动把字符串斜杠换成反斜杠的问题

若为情 2020-12-16 08:06:01
文件流中他会把斜杠转成反斜杠,linux只认识斜杠,然后读不到文件。我用了file.separator也不行。因为一放到流里后,它又会把斜杠转成反斜杠,有啥办法能解决么?
我的情况和这个帖中类似。
https://bbs.csdn.net/topics/390885581
...全文
4916 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_58846669 2023-08-03
  • 打赏
  • 举报
回复

从代码方面比较好解决 获取了路径以后加个判断如果路径有 ""
就给他替换成 "/"

浪费七年时间 2020-12-18
  • 打赏
  • 举报
回复
你在linux下传进去的filePath是什么?
是赵敢敢啊 2020-12-18
  • 打赏
  • 举报
回复
要不要试试

import java.net.URLEncoder;
URLEncoder.encode("URL","UTF-8");
顾染尘 2020-12-18
  • 打赏
  • 举报
回复
在linux下我是将文件夹路径写到配置文件中,然后代码获取的,配置文件后缀.properties。里面写成path=/ver/log/ 这样,希望对你有帮助吧
若为情 2020-12-18
  • 打赏
  • 举报
回复
感谢大家关注,问题已解决。 1.因为是个C/S项目,代码部署到linux服务上后,一部分代码会在service容器内执行,另外一部分代码在client容器内执行。楼主刚接触行业不久,之前都是做web项目,不了解这一点。实际上我的代码放在了client容器内,尽管部署在了服务器上,但代码依旧是在Windows环境下的的client端执行。所以/../..这种绝对路径肯定是获取不到。 2.即便部署正确之后,也无法通过传入/opt/..这种绝对路径直接获取流。因为java程序没有linux权限。同理,通过Runtime.getRuntime().exec(cmd);的方式执行linux命令也无法获取流,该操作要获取root权限。 3.我解决的方式是发送http请求,来获取流。实现方式要看具体环境,这只是一种思路。
若为情 2020-12-16
  • 打赏
  • 举报
回复
            
            httpClient = HttpClients.createDefault();
            HttpPost httpPost = new HttpPost(url);

            InputStream inputStream = new FileInputStream(filePath);

            MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 

            builder.setCharset(Charset.forName("UTF-8"));
            builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

            builder.addBinaryBody(name, inputStream, ContentType.create("multipart/form-data", Consts.UTF_8), fileName);
这是我写的代码,在Windows环境下,读取绝对路径没什么问题。但在linux下绝对路径,斜杠会变成反斜杠,从而路径找不到。拿不到文件

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧