Java小知识

Java小知识

[TOC]java

(1)三种读取文件方法

URL url = this.getClass ().getResource ("/a.txt");
Resources.asCharSource (url, StandardCharsets.UTF_8)
         .readLines ()
         forEach (System.out::println);

String file = ResourceUtils.getFile ("classpath:a.txt").getPath (); // 经过Spring工具类
String file = this.getClass ().getResource ("/a.txt").getFile ().substring (1); // 经过JDK
java.nio.file.Files.readAllLines (Path.of (file)).forEach (System.out::println);

// 最佳方式
File file = ResourceUtils.getFile ("classpath:a.txt");
com.google.common.io.Files.readLines (file, Charsets.UTF_8).forEach (System.out::println);

(2)任意时间段内任意星期几对应的全部日期

/**
 * 获取两个日期间隔的全部日期
 *
 * @param startDate 开始日期
 * @param endDate   结束日期
 * @return 全部日期的集合
 */
static List<LocalDate> queryWeek(LocalDate startDate, LocalDate endDate, String week) {
    String englishWeek = weekFormat (week);
    long days = ChronoUnit.DAYS.between (startDate, endDate);
    if (days < 0) {
    throw new DateTimeException ("开始时间不能晚于结束时间!");
    }
    return Stream.iterate (startDate, date -> date.plusDays (1))
                 .limit (days + 1)        // 总的天数是间隔天数+1
                 .filter (date -> Objects.equals (date.getDayOfWeek ().toString (), englishWeek))
                 .collect (Collectors.toList ());
}