<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.0</version>
</dependency>
系统直接在指定路径递归生成文件夹,不需要事先在磁盘创建文件夹
//将String写入文件,覆盖模式,字符集为UTF-8(自动创建文件夹并且写入数据落地)
Date date = DateUtil.date();
FileUtil.writeUtf8String(value.getXml(),fileConfig.getOutputTemp() + "\\"+ DateUtil.format(date, "YYYY")+"\\" + DateUtil.format(date, "MM") + "\\" + DateUtil.format(date, "dd")+"\\" + DateUtil.format(date, "hh")+"\\" + DateUtil.format(date, "mm")+ "/" + value.getMessageType() + "_" + identify + ".xml");
package com.cloudwing.tool.gui.util;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.XppDriver;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
public class XsteamUtil {
public static Object toBean(Class<?> clazz, String xml) {
Object xmlObject = null;
XStream xstream = new XStream();
xstream.processAnnotations(clazz);
xstream.autodetectAnnotations(true);
xmlObject = xstream.fromXML(xml);
return xmlObject;
}
/**
* 生成xml写出本地
*/
public static <T> T writeOut(T t, String path) {
//使用NoNameCoder,是为了避免带下划线的字段,在生成xml时被自动替换为双下划线的问题。
XStream xstream = new XStream(new XppDriver(new NoNameCoder()));
//设置Xstream解析注解
xstream.autodetectAnnotations(true);//自动注解扫描,否则注解不生效
//输出xml到本地
PrintWriter writer = null;
try {
writer = new PrintWriter(path, "utf-8");
//自己写xml头部
writer.write("<?xml version=\"1.0\"encoding=\"UTF-8\"?>\n");
xstream.toXML(t, writer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} finally {
writer.close();
}
return null;
}
public static void writeOut(String path,String xml) {
//输出xml到本地
PrintWriter writer = null;
try {
writer = new PrintWriter(path, "utf-8");
//自己写xml头部
writer.write(xml);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} finally {
writer.close();
}
}
}
//创建当前日期
DateTime dateTime = new DateTime();
String identify = DateUtil.format(dateTime, "yyyyMMddHHmmss") + RandomUtil.randomNumbers(9);
//写出到文件夹(文件夹需要自行在磁盘创建,否则提示找不到)
XsteamUtil.writeOut(fileConfig.getOutputTemp() + "/" + value.getMessageType() + "_" + identify + ".xml", value.getXml());
//移动文件并创建文件夹
File files = new File(fileConfig.getOutputTemp());
String[] names = files.list();
for (String fileName : names) {
//查找Xml文件
if (fileName.endsWith(".xml")) {
Date date = DateUtil.date();
//响应成功
//判断文件是否存在
if (FileUtil.exist(fileConfig.getOutputTemp() + "\\" + fileName)) {
//移动并创建succeed文件夹
FileUtil.move(new File(fileConfig.getOutputTemp() + "\\" + fileName),
FileUtil.mkdir(fileConfig.getOutputTemp() + "\\"+ DateUtil.format(date, "YYYY")+"\\" + DateUtil.format(date, "MM") + "\\" + DateUtil.format(date, "dd")+"\\" + DateUtil.format(date, "HH")+"\\" + DateUtil.format(date, "mm")), true);
}
}
}
-------------- -------------- -------------- -------------- -------------- -------------- -------------- -------------- -------------- -------------- --------------
String separator = File.separator;
//linux路径 /opt/ftpFile (File.separator+"opt"+File.separator+"ftpFile")
String property = System.getProperty("user.dir");//user.dir指定了当前的路径
String absolutePath1 = FileUtil.getAbsolutePath(System.getProperty("user.dir"));
File d_drive = new File(".." + File.separator + ".." + File.separator + "ftpFile");//../../ftpFile
File canonicalFile = d_drive.getCanonicalFile();//得到相对路径
logger.info("得到相对路径:" + canonicalFile);