/**
* @Description: 创建文件夹或者文件(适用于不同的操作平台,注意:Linux上需要先拥有在文件夹下进行操作的权限)方法
* @Param: folderPath文件夹路径(不传递指定文件夹则默认为项目存储的文件夹中,若传递,格式请保持为: D:/1555555/20200605/).
* fileName文件名(不传递指定文件名,则方法内会自动生成一个文件名).
* fileType生成的文件具体格式(如果文件名自带后缀则fileType可为空).
* @return: 返回String. 文件夹路径/文件路径,创建的是什么则返回什么
* @Author: liu_yan
* @Date: 2018/11/15
*/
public static String operatingPlatform(String folderPath, String fileName, String fileType) {
try {
// 分隔符
String separator = "/";
String userDir =System.getProperties().getProperty("user.dir").replace("\\","/") + separator;
// 如果传递了文件夹路径.则以传递的路径为基准创建文件夹(举例:windows - D:/1555555/20200605; linux - /usr/local/20200605 )
if (StringUtils.isNotEmpty(folderPath)) {
userDir = folderPath;
File file = new File(folderPath);
if (!file.exists()) file.mkdirs();// 如果文件夹不存在,则创建(注意:如果是Linux这一步可能出错,可能没有文件夹创建权限,注意)
}
System.out.println("************文件夹路径:"+folderPath+"************");
/*
* 以下预计了几种情况:
* 1.fileName为空,fileType不为空,则则以当前时间精确到毫秒值+当前时间的纳秒值为文件名创建文件
* 2.fileName不为空. 则先判断是否自带后缀(如果有后缀,则不管它是否传递了fileType都直接用文件名,
* 如果没有后缀,则用传递进来的fileType作为后缀,要是fileType都没有.那就不创建文件了.)
*/
boolean flag = false;
if (StringUtils.isEmpty(fileName) && StringUtils.isNotEmpty(fileType)) {
String yyyyMMdd = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
long nanosecond = System.nanoTime();
fileName = yyyyMMdd + nanosecond + "." + fileType;
userDir = userDir + fileName;
flag = true;
} else if (StringUtils.isNotEmpty(fileName)) {
//检查传递进来的fileName是否自带后缀
int lastIndexOf = fileName.lastIndexOf(".");
if(lastIndexOf>0){//表示文件名自带后缀
userDir = userDir + fileName;
flag = true;
}else {
if(StringUtils.isNotEmpty(fileType)){//文件名无后缀,则必须要传递进fileType
userDir = userDir + fileName + "." + fileType;
flag = true;
}
}
}
//if true表示需要创建文件
if(flag){
File file1 = new File(userDir);
if (!file1.exists()) file1.createNewFile();// 如果不存在该文件,则创建
}
return userDir;
} catch (Exception e) {
e.printStackTrace();
return "false";
}
}