把 SpringBoot 项目开发环境从 Windows 迁移到 macOS 遇到的文件保存路径问题

185 天前
 NASK
之前开发一直使用的 Windows ,服务器使用的 Linux Docker Tomcat 容器 war 包部署。没有使用对象存储,代码中文件保存逻辑针对 Windows 和 Linux 系统进行判断写了两套逻辑。最近换了 macOS ,不想再写一套 macOS 的逻辑了,想直接让 SpingBoot 的项目在本地 Docker 容器运行调试,这种方法可行吗?麻烦万能的 v 友给一个思路。
1633 次点击
所在节点    程序员
12 条回复
jackshen
185 天前
代码贴一下?或者报错信息贴一下?感觉你这个情况在 macos 装一个 window 虚拟机,在虚拟机里开发可能会更简单
SmallZheng
184 天前
基本上可以,macOS 的 docker 也是基于 Linux 的
hippieZhou
184 天前
可以通过 docker 来挂载外部文件系统的方式解决么,通过 docker 来隔离不同系统的文件系统差异,对应用程序而言隐藏这些差异
oneisall8955
184 天前
常用文件工具都封装好了吧,什么错?
NASK
184 天前
@jackshen
if (CommonUtil.isWindows()){
tempPath = Constants.STATIC_PATH + "/systemfile/" + XXX_SERVER + "/";
}
if (CommonUtil.isLinux()){
tempPath = "/software/resources/config/" + XXX_SERVER + "/";
} 代码里很多这种,我不想再写一个 CommonUtil.isMacOS()了,判断系统类型用的是 public static boolean isWindows() {
return System.getProperty("os.name").toLowerCase().contains("windows");
}这种
NASK
184 天前
@oneisall8955
没报错,我目前加了一个 CommonUtil.isMacOS()的逻辑,但是感觉太麻烦了,需要修改多处代码。想试着在本地容器跑,这样就不用加 CommonUtil.isMacOS()的判断了。war 包直接映射到 tomcat 容器,调试用 tomcat remote 。
sagaxu
184 天前
@NASK 临时目录难道不应该读 java.io.tmpdir 属性吗?这东西就不应该写死在代码中。
NASK
184 天前
@sagaxu 这个项目也有一年多了,我是最近参与的,难受的是这种硬编码在这个项目里还有很多😇
monmon
184 天前
一年多的项目就别屎上堆屎了,ctrl+shift+F `CommonUtil.isWindows()` 这种代码一般不会超过 100 处,抽到配置文件区分一下环境,几分钟顺手就改改了,大家都舒服。
conn4575
184 天前
你的文件应该都是按某种目录结构保存在某个根路径下,只需要定义根路径的位置,其他目录都使用相对路径就行了,相对路径的写法三个系统都是通用的。
zhady009
184 天前
Path 本来就 3 个平台都支持不需要做什么,除非你自己写死
jackshen
184 天前
@NASK #5 这个方法了解一下? java.io.File#createTempFile(java.lang.String, java.lang.String)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1115863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX