跳至主要内容

博文

目前显示的是 八月, 2020的博文

Java NIO File API使用总结

Welcome file 简介 Java I/O File API是JDK的核心API之一,在构建系统时,十分常用。我在工作实践中,见到大多数人最常使用的是 java.io.File 的API,对Java7之后出现的NIO的API不太熟悉。 总的来说,File能实现的功能NIO都能实现,并且NIO API更好用、更方便,同时内置了不少工具类,也解决了File API的一些缺陷。 根据实际工作中的使用和一些文档,本文总结了一些常见的Java File NIO的用法。 File的缺陷 File API比较简单好用,能完成大部分功能,但使用上有不少的问题,比如: 大多数方法出错不抛出异常 比如:删除 new File("1111.txt").delete() ,如果删除失败, delete 方法只会返回一个 false ,开发者没办法知道具体原因,比如是因为没权限,还是因为文件已被删除? 不支持软链接,这会导致有某些情况下没办法遍历目录 文件的元数据支持较少,比如缺少文件的权限、安全属性等 等等。 File和Path java.nio.file.Path 是Java7中用于替代File的新API,File和Path的概念相似,都是表示一个文件或文件夹的抽象。实际上,也可以把Path当成新API中的File。 FIle与Path的主要区别: File是实体类,Path是接口,使得Path更符合面向对象的设计原则。 File独立于文件系统,Path与文件系统相关,以及Path能给出更多关于文件的信息。 新写的代码最好就开始使用Path,有需要与File交互的地方,可以使用FIle与Path相互转换方法: Path path = new File ( DEMO_PATH ) . toPath ( ) ; File file = path . toFile ( ) ; Path的基本操作 创建Path URI uri = new URI ( "file:///" + DEMO_PATH ) ; // method 1 Path path1 = Paths . get ( DEMO_PATH ) ; // method 2

在Docker中安装并设置Jenkins

Welcome file 简介 相比在主机中直接安装各种基础服务,在Docker中安装和升级都更方便,也更不容易破坏其他的基础服务。下面总结一下Jenkins在Docker中的使用。 安装并运行Jenkins 安装并运行命令如下: docker run -d -u root --restart always --name jenkins \ -e "JAVA_OPTS=-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai -Duser.timezone=Asia/Shanghai -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai" \ --group-add $(stat -c '%g' /var/run/docker.sock) \ -v /etc/localtime:/etc/localtime:ro \ -v /opt/data/jenkins/workspace/:/usr/src/app \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):$(which docker) \ -v /data/jenkins:/var/jenkins_home \ -v /data/jenkins_tool:/jenkins_tool \ -v /data/jenkins_tool/repo:/repo \ -p 8099:8080 -p 50000:50000 \ jenkins/jenkins:lts Jenkins的Docker官方镜像中有很多参数的解释,这里列出其中一些参数以及使用原因: -u root 使用root启动镜像中的Jenkins服务,会有一定安全风险,但权限方面会方便很多,也考虑到是在内网中运行所以问题不大 -e xxxxxxxx 和 -v /etc/localtime:/etc/localtime:ro 设置Jenkins的时区 -v /var/run/docker.sock:/var/run/docker.sock -v $(which doc