总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇

article/2025/10/16 3:16:22

本文是Java IO总结系列篇的第3篇,前篇的访问地址如下:

  • 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇
  • 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇

本文为大家介绍Java IO-创建文件夹的四种方法,及其优缺点的解析。如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力。

1.传统API创建文件夹方式

Java传统的IO API种使用java.io.File类中的file.mkdir()file.mkdirs()方法创建文件夹

  • file.mkdir()创建文件夹成功返回true,失败返回false。如果被创建文件夹的父文件夹不存在也返回false.没有异常抛出。
  • file.mkdirs()创建文件夹连同该文件夹的父文件夹,如果创建成功返回true,创建失败返回false。创建失败同样没有异常抛出。
@Test
void testCreateDir1() {//“D:\data111”目录现在不存在String dirStr = "D:\\data111\\test";File directory = new File(dirStr);//mkdirboolean hasSucceeded = directory.mkdir();System.out.println("创建文件夹结果(不含父文件夹):" + hasSucceeded);//mkdirshasSucceeded = directory.mkdirs();System.out.println("创建文件夹结果(包含父文件夹):" + hasSucceeded);}

输出结果如下:使用mkdir创建失败,使用mkdirs创建成功。

创建文件夹结果(不含父文件夹):false
创建文件夹结果(包含父文件夹):true

大家可以看到,mkdir和mkdirs虽然可以创建文件,但是它们在异常处理的环节做的非常不友好。创建失败之后统一返回false,创建失败的原因没有说明。是父文件夹不存在所以创建失败?还是文件夹已经存在所以创建失败?还是因为磁盘IO原因导致创建文件夹失败?

2. Java NIO创建文件夹

为了解决传统IO创建文件夹中异常失败处理问题不明确的问题,在Java的NIO中进行了改进。

2.1. Files.createDirectory创建文件夹

  • 如果被创建文件夹的父文件夹不存在,则抛出NoSuchFileException.
  • 如果被创建的文件夹已经存在,则抛出FileAlreadyExistsException.
  • 如果因为磁盘IO出现异常,则抛出IOException.
Path path = Paths.get("D:\\data222\\test");
Path pathCreate = Files.createDirectory(path);

2.2.Files.createDirectories创建文件夹及其父文件夹

  • 如果被创建文件夹的父文件夹不存在,就创建它
  • 如果被创建的文件夹已经存在,就是用已经存在的文件夹,不会重复创建,没有异常抛出
  • 如果因为磁盘IO出现异常,则抛出IOException.
Path path = Paths.get("D:\\data222\\test");
Path pathCreate = Files.createDirectorys(path);

另外大家要注意:NIO的API创建的文件夹返回值是Path,这样方便我们在创建完成文件夹之后继续向文件夹里面写入文件数据等操作。比传统IO只返回一个boolean值要好得多。

欢迎关注我的博客,里面有很多精品合集

  • 本文转载注明出处(必须带连接,不能只转文字):字母哥博客。

觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

  • 《手摸手教你学Spring Boot2.0》
  • 《Spring Security-JWT-OAuth2一本通》
  • 《实战前后端分离RBAC权限管理系统》
  • 《实战SpringCloud微服务从青铜到王者》
  • 《VUE深入浅出系列》

http://chatgpt.dhexx.cn/article/C9RrRbYW.shtml

相关文章

Java创建文件和文件夹

例子如下: java代码: import java.io.*;//导入所需的包 public class IOTest {//类public static void main(String[] args){//主程序,程序入口File filenew File("D:\\Qiju_Li");if(!file.exists()){//如果文件夹不存在file.mkdi…

CentOS7.7 重启crond失败 service crond restart

用service crond restart命令启动如图: 应使用 /bin/systemctl 执行命令 查看crontab状态: service crond status

配置crond定时任务

文章目录 一. crond计划任务概述二. crond配置文件详解三. crond计划任务管理四. crond配置编写实例五. crond计划任务调试 一. crond计划任务概述 什么是计划任务,计划任务类似于我们平时生活中的闹钟。 在Linux系统的计划任务服务crond可以满足周期性执行任务的需…

Linux的crond的配置流程,Linux之定时任务Crond详解

定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。 Crond服务会定期(默认每分钟检查一次)检查系统…

linux 之 crond定时任务

一、crond简介 crond 是linux下用 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一、系统任务调度 二、crond服务 1.安装crontab: 常用命令: 2.操作设置 新增调度…

crond服务总结

昨天翻阅程序发现服务器端管理程序的启动方式很特别,在之前是由init进程启动程序脚本里的进程,昨天发现服务程序并没有在任何脚本中有启动的体现,但是服务程序确实是启动了,经过一番查找发现原来是crond定时启动被触发然后启动了服…

crond

Linux中的crond:设置周期性被执行的指令 crond与crontab密不可分,简言之,crond是crontab的一个守护进程。 crontab是一个命令,它从标准输入设备读取指令,存放于“contab文件”中,供以后读取和执行。 crond时…

linux 很多CROND进程,linux添加定时任务crond

1.crontab –e:编辑当前定时任务 保存完重新crond : service crond restart 2. crontab用法 crontab –e : 修改 crontab 文件,如果文件不存在会自动创建。 crontab –l : 显示 crontab 文件。 crontab -r : 删除 crontab 文件。 crontab -ir : 删除 crontab 文件前…

crond使用指南

crontab 为定时执行脚本命令,我学习这个的目的是为了定时执行校园网登录脚本,以防止服务器内网穿透掉线。 1. 编写联网脚本 2. 赋予脚本执行权限 3. 安装crond yum install crontabs -y systemctl enable crond #设为开机启动 systemctl start crond…

linux下crond服务,Linux之定时任务Crond详解

定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。 Crond服务会定期(默认每分钟检查一次)检查系统…

Linux crond命令使用介绍

目录 前言一、crond简介系统任务调度用户任务调度 二、crond服务三、crontab命令详解1.命令格式2.命令功能3.命令参数4.常用方法1). 创建一个新的crontab文件2). 列出crontab文件3). 编辑crontab文件4). 删除crontab文件5). 恢复丢…

linux 查看crond服务器,CentOS安装crond服务

初学Linux, 太多太多的问题,让我不得不有头疼的时候,比如学到Cron建立计划任务时,却发现我的虚拟机没有安装cron本身, 为了安装这个,我也花了不少周折,现总结如下: 1.先检查Linux是否已经安装cr…

定时任务crond

一、定时任务(crond) 1.什么crond:crond就是计划任务,类似于我们平时生活中的闹钟,定点执行 。2.为什么要用crond:计划任务主要是做一些周期性的任务,比如: 凌晨3点定时备份数据。或11点开启网站抢购接口,1…

linux crond定时任务,Linux之定时任务Crond使用

Linux之定时任务Crond使用 一、用法 crond服务是linux系统自带的服务,是不需要手动安装的; crond服务是一种守护进程; Linux中的用户使用contab命令来配置corn任务; crontab –e : 修改 crontab 文件,如果文件不存在会自动创建; crontab –l : 显示 crontab 文件; cront…

Linux的基本操作——crond定时任务

一、crond简介 1、基本介绍 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每…

数组之二维数组

目录 一、二维数组的定义与引用 1、二维数组的定义 2、二维数组的引用 二、二维数组的赋值 1、二维数组的初始化 三、二维数组的应用举例 一、二维数组的定义与引用 1、二维数组的定义 一般格式: 类型说明符 数组名 [常量表达式1] [常量表达式2]; 其中…

JavaScript一维数组转二维数组

[1, 2, 3, 4, 5, 6, 7, 8] 实现效果 [[1, 2, 3, 4], [5, 6, 7, 8]] 1. slice截取 function fn(arr, num) {let newArr []const total Math.ceil(arr.length / num)console.log(total);for (let i 0; i < total; i) {a arr.slice(i * num, (i 1) * num)newArr…

js一维数组转二维数组(生成二维数组)

昨天遇到了一个需要对后端传来的一段数据做操作&#xff0c;是将一维数组转为二维数组&#xff0c;思考了半天&#xff0c;夜晚又和朋友讨论了一下&#xff0c;思路如下。&#xff08;毕竟我只是个切图仔&#xff09; let classRes [{className: 05,name: a1,age: 12,sex: 1},…

JS二维数组赋值问题

背景 定义二维数组并赋值 let list new Array(5).fill(new Array(3).fill(0))此时在给二维数组赋值时使用如下代码&#xff1a; list[2][1] 2看下赋值结束后的打印结果&#xff1a; 未达到预期。 ES6解析 我们看下阮一峰在es6中对fill的定义&#xff1a; 理解 这样就…

JavaScript 二维数组转一维数组

目录 1. flat() 2. reduceconcat 3. [ ].concat 4. concat.apply 5. toString split &#xff08;字符串或数值&#xff09; 6. 遍历判断 7.多维数组转一维数组 1. flat() 语法&#xff1a;var newArray arr.flat([depth]) depth(深度)&#xff1a;指定要提取嵌套数…