今天,创建一个文件夹目录的时候,创建多级目录的时候发现,自己老是创建失败,但是系统显示文件夹创建成功,但是你去找文件夹的时候,又发现创建失败,这里在我成功之后封装了一个创建文件夹的创建对象。
首先这个文件夹是用来解决本地存储文件和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;
/**
*
* 创建一个文件上传工具类
* @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);
*/
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/197934.html