java关于文件记录篇章之文件夹创建篇

今天,创建一个文件夹目录的时候,创建多级目录的时候发现,自己老是创建失败,但是系统显示文件夹创建成功,但是你去找文件夹的时候,又发现创建失败,这里在我成功之后封装了一个创建文件夹的创建对象。
首先这个文件夹是用来解决本地存储文件和linux上存储文件,但是目前,我并未在linux上测试,但是根据Windows的反馈,算是成功了,故而写一篇博客记录一下,这个困扰了我一天的问题。
思路:
既然要上传文件到具体的文件目录下,第一步,我们需要做的是,创建文件目录,之后判断这个文件是否存在,如果存在,那么我们就可以之间写入文件,如果不存在,那么我们就需要使用mkdir或者mkdirs进行文件创建,其中mkdir是创建单个文件目录,适用于创建单级文件目录创建,mkdirs适合多级目录创建,以下我通过配置类来进行创建。

package com.it.common.utils;import com.it.common.constant.DateConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;/**** 创建一个文件上传工具类* @author HWZ* @date 2023年07月10日 16:17* @description*/
public class CreateUpLoadFileUtils {private static Logger logger = LoggerFactory.getLogger(CreateUpLoadFileUtils.class);@Value("${fds_pro_url}")public String rootPath;/*** 定义操作系统的名称*/final static String OS_NAME = "os.name";/*** 定义操作系统类型为Windows*/final static String OS_WINDOWS = "windows";/*** 如果是Windows的话,那么他的存储路径为 D:/test/data/expxsl* D:/test*/final static String WINDOWS_PATH = "D:/test/data/expxsl";/*** 如果是其他操作系统,这里默认不是Windows就是Linux*/final static String LINUX_PATH = "/data/expxsl/";/*** 先创建一个文件夹,如果当前文件夹不存在就创建一个,如果存在就使用当前文件夹*/public static String createFile() {String filePath;//创建一个StringBuilder对象,用来存储字符串常量File folder;  //,folder1,folder2,folder3//判断一下当前所处的系统环境if (System.getProperty(OS_NAME).toLowerCase().contains(OS_WINDOWS)) {//获取当期日期 并以此时间作为文件夹String dateFoler = new SimpleDateFormat(DateConstant.FORMAT_TYPE_5).format(new Date());//通过一个StringBuilder创建一个文件夹  .append("/")   File.separator,文件分隔符  然后添加一个日期,这里我发现一个问题,问题解决,使用mkdirs创建多级目录,也就是D:\test\data\expxsl需要手动创建StringBuilder sb = new StringBuilder(WINDOWS_PATH).append(File.separator).append(dateFoler);filePath = sb.toString();folder = new File(filePath);if(!folder.exists()){//直接创建多级目录boolean flag = folder.mkdirs();if(flag){logger.error("CreateUploadFileUtils:createFile创建文件成功");}}else{logger.error("当前文件夹创建失败,请检查文件夹是否存在");}//            //TODO 目录创建好了,接下来就是存放当前具体文件了
//            try {
//                //异常处理
//                //如果当前文件夹下没有具体文件,那么就创建该文件
//                BufferedWriter bw = new BufferedWriter(new FileWriter( filePath+ File.separator + "text1.txt"));
//                bw.write("你好世界111哈哈哈哈!!!");
//                bw.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }//.append(File.separator).append(dateFoler);//笨一点的方式,一级一级的创建,不推荐/*//创建一级目录//如果是Windows环境  sb.toString()String filePath = sb.toString();//System.out.println(filePath);folder = new File(filePath);System.out.println("当前处于Windows环境下");if (!folder.exists()) {boolean flag = folder.mkdir();if (flag) {logger.error("CreateUploadFileUtils:createFile创建文件成功1");}}else {logger.error("当前文件夹创建失败,请检查文件夹是否存在1");}//创建二级目录sb.append(File.separator + "data");String filePath1 = sb.toString();folder1 = new File(filePath1);if(!folder1.exists()){boolean flag = folder1.mkdir();if(flag){logger.error("CreateUploadFileUtils:createFile创建文件成功2");}}else{logger.error("当前文件夹创建失败,请检查文件夹是否存在2");}//创建三级目录sb.append(File.separator + "expxsl");String filePath2 = sb.toString();folder2 = new File(filePath2);if(!folder2.exists()){boolean flag = folder2.mkdir();if(flag){logger.error("CreateUploadFileUtils:createFile创建文件成功3");}}else{logger.error("当前文件夹创建失败,请检查文件夹是否存在3");}System.out.println("输出当前所在文件路径");System.out.println(System.getProperty("user.dir"));//创建4级目录sb.append(File.separator+dateFoler);String filePath3 = sb.toString();folder3 = new File(filePath3);if(!folder3.exists()){boolean flag = folder3.mkdir();if(flag){logger.error("CreateUploadFileUtils:createFile创建文件成功4");}}else{logger.error("当前文件夹创建失败,请检查文件夹是否存在4");}//TODO 存储相关文件信息try {//异常处理//如果当前文件夹下没有具体文件,那么就创建该文件BufferedWriter bw = new BufferedWriter(new FileWriter( filePath3+ File.separator + "text.xsl"));bw.write("你好世界111!!!");bw.close();} catch (IOException e) {e.printStackTrace();}
*/return filePath;} else {//添加一个具体的文件路径//path.append(LINUX_PATH).append(new SimpleDateFormat(DateConstant.FORMAT_TYPE_5).format(new Date())).append("/");//获取当前的时间,并根据当前的时间去存放一个Excel文件String dateFoler = new SimpleDateFormat(DateConstant.FORMAT_TYPE_5).format(new Date());StringBuilder sb = new StringBuilder(LINUX_PATH).append(File.separator).append(dateFoler);;// System.out.println(sb);System.out.println("当前环境处于Linux下");filePath = sb.toString();folder = new File(filePath);if (!folder.exists()) {boolean flag = folder.mkdirs();if(flag){logger.error("CreateUploadFileUtils:createFile创建文件成功");}}else{logger.error("创建文件失败,请检查是否存在文件");}System.out.println(sb.toString());//以上是创建文件夹//TODO 接下来就是存储文件了,并将相关数据存储到文件中去了
//            try {
//                //异常处理
//                //如果当前文件夹下没有具体文件,那么就创建该文件  注意,这个连接肯定是要改的,具体生成的excel文件可不是我这样的后缀,充当变量然后拼接后缀来动态创建
//                // ,就如同这里的时间文件夹一样
//                BufferedWriter bw = new BufferedWriter(new FileWriter( filePath+ File.separator + "text1.txt"));
//                //这里写的时候就是写具体的文件了
//                bw.write("你好世界111哈哈哈哈!!!");
//                bw.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }}return filePath;}public static void main(String[] args) {//        System.out.println(new SimpleDateFormat(DateConstant.FORMAT_TYPE_5).format(new Date()));
//        String dateFoler = new SimpleDateFormat(DateConstant.FORMAT_TYPE_5).format(new Date());
//        StringBuilder sb = new StringBuilder(LINUX_PATH).append(dateFoler).append("/");
//        System.out.println(sb.toString());// createFile();//            String folderPath = "/path/to/folder";
//
//            String filePath = "/path/to/folder/filename.txt";
//            String fileContent = "要写入的文件内容";
//
//            // 创建文件夹
//            //File folder = new File(folderPath);
//        File folder = new File(WINDOWS_PATH);
//            if (!folder.exists()) {
//                boolean isCreated = folder.mkdir();
//                if (isCreated) {
//                    System.out.println("文件夹创建成功!");
//                }else {
//                    System.out.println("文件夹创建失败!");
//                    return;
//                }
//            } else {
//                System.out.println("文件夹已存在!");
//            }
//
//            // 写入文件
//            File file = new File(filePath);
//            try {
//                if (!file.exists()) {
//                    boolean isFileCreated = file.createNewFile();
//                    if (!isFileCreated) {
//                        System.out.println("文件创建失败!");
//                        return;
//                    }
//                }
//
//                FileWriter writer = new FileWriter(file, true);
//                writer.write(fileContent);
//                writer.close();
//                System.out.println("文件写入成功!");
//            } catch (IOException e) {
//                System.out.println("文件写入失败:" + e.getMessage());
//            }
//        }/*File file=new File("D:\\Qiju_Li");if(!file.exists()){//如果文件夹不存在file.mkdir();//创建文件夹}try{//异常处理//如果Qiju_Li文件夹下没有Qiju_Li.txt就会创建该文件BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\Qiju_Li\\Qiju_Li.txt"));bw.write("Hello I/O!");//在创建好的文件中写入"Hello I/O"bw.close();//一定要关闭文件}catch(IOException e){e.printStackTrace();}*/createFile();/*// 本地路径没有,这创建本地工作任务基础路径String pathname = "D:/user/company/mapreduce";File file = new File(pathname);boolean flag = false;if (!file.exists()) {flag = file.mkdirs();}try {//异常处理//如果当前文件夹下没有具体文件,那么就创建该文件BufferedWriter bw = new BufferedWriter(new FileWriter("D:/user/company/mapreduce/text.txt"));bw.write("我就是喜欢你!!!");bw.close();} catch (IOException e) {e.printStackTrace();}System.out.println("path status:" + flag);
*/}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小节5:Python列表list常用操作

1、对列表的基本认知: 列表list,是可变类型。比如,append()函数会直接改变列表本身,往列表里卖弄添加元素。所以,list_a list_a.append(123)就是错误的。如果想删除列表中的元素,可以用remove()函数&…

Android RecyclerView BaseSectionQuickAdapter实现分组功能

详情网站:手把手教你使用BaseSectionQuickAdapter实现分组功能,史上最详细Adapter使用教程_basequickadapter 分组_杨阿程的博客-CSDN博客 //加入二个包implementation com.android.support:recyclerview-v7:26.0.0-beta1implementation com.github.Cym…

2023/9/15 -- C++/QT

作业: 1> 将工程文件进行注释 2> 03login_box.pro: QT core gui #core核心库 gui图形开发库greaterThan(QT_MAJOR_VERSION, 4): QT widgets #4.0版本以上自动包含widgets库CONFIG c11 #支持C11版本# The following define makes your compiler em…

npm 发布包、更新包,同步到 cnpm (taobao镜像)

如果还没有npm账号,请直接到 https://www.npmjs.com 注册。已有账号,根据下面的流程登录: 1. 登录 执行命令: npm login根据步骤输入你的用户名(Username),密码(Password),邮箱(Email),邮箱接…

C# byte转bit bit组装成byte

bit组装成Byte public void BitToByte(){List<char[]> chars new List<char[]>();char mm1 1;char mm2 1;char mm3 1;char mm4 1;char mm 0;char[] chars0 new char[]{ mm1, mm2, mm3, mm4, mm, mm, mm, mm };//0-7 chars.Add(chars0);byte[] bytes new b…

深度学习推荐系统(八)AFM模型及其在Criteo数据集上的应用

深度学习推荐系统(八)AFM模型及其在Criteo数据集上的应用 1 AFM模型原理及其实现 沿着特征工程自动化的思路&#xff0c;深度学习模型从 PNN ⼀路⾛来&#xff0c;经过了Wide&#xff06;Deep、Deep&#xff06;Cross、FNN、DeepFM、NFM等模型&#xff0c;进⾏了大量的、基于不…

idea装载jerbel以及文件上传下载

一、JRebel 1.1 Jrebel介绍 JRebel是一个Java开发工具&#xff0c;它是一款用于实时代码重载的插件。它的主要功能是在不重新启动应用程序的情况下&#xff0c;将修改后的Java代码实时应用到正在运行的应用程序中&#xff0c;从而加快开发周期&#xff0c;提高开发效率。 实…

【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙

文章目录 前言一、代价地图自定义图层1.1 Costmap组成1.2 costmap_2d1.3 实现过程1.3.1 安装插件1.3.2 在costmap_2d中插入障碍物1.3.3 修改launch文件1.3.4 设置障碍物坐标参数二、图像编辑器2.1 安装GIMP2.1.1 命令行方式安装2.1.2 使用图形界面安装GIMP:2.2 实现过程三、ro…

Sqlserver如何调试存储过程

前提&#xff1a;需要使用Sql Server Managerment Studio 工具进行调试。 步骤&#xff1a; 1.选择存储过程&#xff0c;右键选择“执行存储过程”。操作过后&#xff0c;会生成一个调用存储过程的代码块。 2.以编辑模式打开所以需要调试的存储过程。 3.点击调试按钮进行调…

【视觉检测】电源线圈上的导线弯直与否视觉检测系统软硬件方案

 检测内容 线圈上的导线弯直与否检测系统。  检测要求 检测线圈上的导线有无弯曲&#xff0c;弯曲度由客户自己设定。检测速度5K/8H625PCS/H。  视觉可行性分析 对样品进行了光学实验&#xff0c;并进行图像处理&#xff0c;原则上可以使用机器视觉进行测试测量…

数据结构与算法--排序算法复习

目录 1.三种常见的简单排序&#xff1a; 1.1冒泡排序 1.2 选择排序 1.3 插⼊排序 2 常见高级排序算法 2.1 希尔排序 2.2 快速排序 2.3 归并排序 2.4计数排序 先上结论&#xff1a; 1.三种常见的简单排序&#xff1a; 1.1冒泡排序 1.⾸先在未排序数组的⾸位开始&#…

Vue 3的革命性新特性:深入了解Composition API

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

安装深度(Deepin)系统

Deepin系统安装 Deepin是和Ubuntu一样&#xff0c;是一个基于Debian的Linux的发型版本。 Deepin相对于Ubuntu&#xff0c;Deepin更适合中国用户的使用习惯。 一 官网工具制作启动盘 制作启动盘、和安装系统&#xff0c;操作非常简单&#xff0c;nice&#xff01; 官网提供了…

C语言 -- 零基础入门详解

文章目录 引言1. 第一个C语言程序&#xff1a;HelloWorld1.1 编写C语言代码&#xff1a;hello.c1.2 代码分析 2. 数据类型2.1 常量与变量2.1.1 关键字2.1.2 数据类型2.1.3 常量2.1.4 变量2.1.5 使用示例 2.2 整型&#xff1a;int2.2.1 整型变量的定义和输出2.2.2 整型变量的输入…

操作系统的运行机制

1.程序的运行原理&#xff1a; 1.CPU执行指令的过程 C语言代码在编译器上“翻译”&#xff0c;得到二进制的机器指令。一条高级语言的代码翻译过来可能会对应多条机器指令。对于CPU来说&#xff0c;机器指令才是"能看得懂"的语言。程序运行的过程其实就是CPU执行一…

VRTK4⭐二.VRTK4的项目基础配置

文章目录 &#x1f7e5; 硬件基本配置&#x1f7e7; 设置XR Plug-in Management&#x1f7e8; 添加项目Tilia&#x1f7e9; 配置项目Hierarchy &#x1f7e5; 硬件基本配置 解决使用OpenXR,HTC头显正常追踪,但手柄无法使用的问题. 问题如下: 当我们按照官方的标准流程配置完Op…

Apache Kafka 基于 S3 的数据导出、导入、备份、还原、迁移方案

在系统升级或迁移时&#xff0c;用户常常需要将一个 Kafka 集群中的数据导出&#xff08;备份&#xff09;&#xff0c;然后在新集群或另一个集群中再将数据导入&#xff08;还原&#xff09;。通常&#xff0c;Kafka集群间的数据复制和同步多采用 Kafka MirrorMaker&#xff0…

负载均衡-ribbon源码解析

负载均衡-ribbon源码解析 1 LoadBalanced注解 /*** 基于ribbon调用服务及负载均衡* return*/ LoadBalanced Bean public RestTemplate restTemplate(){return new RestTemplate(); }Bean ConditionalOnMissingBean public RestTemplateCustomizer restTemplateCustomizer(fin…

学习笔记|矩阵按键控制原理|数值转化为键码|密码锁|STC32G单片机视频开发教程(冲哥)|第十四集:矩阵按键原理及实践

文章目录 1.矩阵按键是什么2.矩阵按键的控制原理3.矩阵按键程序的编写将数值转化为键码完整代码&#xff1a;demo.c&#xff1a;key.c:key.h: 密码锁&#xff08;简易版&#xff09;需求分析&#xff1a; 总结课后练习&#xff1a; 1.矩阵按键是什么 这个矩阵按键也是我们这个…

Shell 正则表达式及综合案例及文本处理工具

目录 一、常规匹配 二、常用特殊字符 三、匹配手机号 四、案例之归档文件 五、案例之定时归档文件 六、Shell文本处理工具 1. cut工具 2. awk工具 一、常规匹配 一串不包含特殊字符的正则表达式匹配它自己 例子&#xff0c;比如说想要查看密码包含root字符串的&#x…