栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 获取当前运行程序路径、easyExcel追加方式写入文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 获取当前运行程序路径、easyExcel追加方式写入文件

java获取当前运行程序路径
File f = new File("");
try {
        String dir= f.getCanonicalPath();
        System.out.println("当前文件路径:"+dir);
        } catch (IOException e) {
            log.error("获取文件路径失败:{}", e.getMessage());
            throw new RuntimeException(e);
        }
easyExcel追加方式写入文件
	private static void writeAppend(String path, String sheetName, List list) {

        File file = new File(path + File.separator + FILENAME.split("\.")[0] + "_result.xlsx");
        File tempFile = new File(path + File.separator + UUID.randomUUID().toString().replace("-", "") + ".xlsx");

        if (file.exists()) {
            // 第二次按照原有格式,不需要表头,追加写入
            EasyExcel.write(file, RuleData.class).needHead(false).
                    withTemplate(file).file(tempFile).sheet(sheetName).doWrite(list);
        } else {
            // 第一次写入需要表头
            EasyExcel.write(file, RuleData.class).sheet(sheetName).doWrite(list);
        }

        if (tempFile.exists()) {
            file.delete();
            tempFile.renameTo(file);
        }
        log.info("写入{}成功!", file.getAbsolutePath());
    }
Java中通过文件路径分隔符分割文件路径

在java中,一般为了避免windows系统和linux系统之间路径分隔符的差异,我们会使用File.separator来代替windows下的“”或者Linux下的“/”,来表示文件路径。
如果需要分割路径来获取文件(夹)名,可以使用String.split(String regex)方法,如果只用一个File.separator作为参数会抛异常。

        String separator = File.separator;
        String path = "E:\Program Files (x86)\IdeaProjects\leetcode\src\test\1.txt";
        for(String str : Arrays.asList(path.split(separator))){
            System.out.println(str);
        }

异常如下:

这是因为在Windows下,File.separator是“”,经过转义识别为“”,而String.split方法的参数应该要传入的是一个正则表达式字符串,传入“”就会抛这个异常。因为在java中一个“”代表的是转义字符。
  这个时候如果还是要进行分割需要再加上一个反斜杠,并且需要对这个反斜杠加一个转义字符“”。即代码中“”代表一个反斜杠“”。


如果这样写的话双引号中的 会报错,因为idea预编译会报错:Illegal/unsupported escape sequence,即非法/不支持的转义序列错误,但是不影响程序运行。


我们还可以换种方式写:传入两个File.separator拼接起来作为参数,这样就不会预编译报错。

运行结果是一样的:

然而在Linux系统下,路径分隔符是“/”,分割的时候不需要转义,也就不需要加反斜杠,刚才那种写法就没办法在Linux系统中运行起来了。为了能够兼容Windows和Linux环境,可以使用正则表达式“/|\”来完成。

/|\\


结果:

java集合分组

使用Collectors.groupingBy()。
例如:

Map> ruleDateGroup = ruleDataList.stream().collect(Collectors.groupingBy(RuleData::getName));
java正则获取中文字符
    public static String getStrChinese(String str) {
        String regEx = "[^\u4e00-\u9fa5]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        return m.replaceAll("").trim();
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号