• 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);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    easyExcel追加方式写入文件

    	private static void writeAppend(String path, String sheetName, List<RuleData> 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());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    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);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    异常如下:
    在这里插入图片描述

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

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

    在这里插入图片描述
    我们还可以换种方式写:传入两个File.separator拼接起来作为参数,这样就不会预编译报错。
    在这里插入图片描述
    运行结果是一样的:
    在这里插入图片描述
    然而在Linux系统下,路径分隔符是“/”,分割的时候不需要转义,也就不需要加反斜杠,刚才那种写法就没办法在Linux系统中运行起来了。为了能够兼容Windows和Linux环境,可以使用正则表达式“/|\\”来完成。

    /|\\\\
    
    • 1


    结果:
    在这里插入图片描述

    java集合分组

    使用Collectors.groupingBy()。
    例如:

    Map<String, List<RuleData>> ruleDateGroup = ruleDataList.stream().collect(Collectors.groupingBy(RuleData::getName));
    
    • 1

    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();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    02.Pandas数据读取
    在linux上脱离hadoop安装hbase-2.5.6集群
    深度学习入门(四十五)计算机视觉——目标检测数据集
    git diff,stash,submodule,format-patch
    SpringBoot-生成验证码
    JSONP 跨域访问(2), JSONP劫持
    空间地理数据可视化之 tmap 包及其拓展
    python调用c++版本dll04-传入无参返回的图片处理
    如何用卡片翻转动画制作一个星座运势页面
    .net core 到底行不行!超高稳定性和性能的客服系统:性能实测
  • 原文地址:https://blog.csdn.net/qq_44732146/article/details/126245157