Hutool工具之FileUtil操作xml写出到磁盘

        <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);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值