JAVA 根据指定目录:C:\Users\n\Desktop\地铁发票获取所有文件名称。然后使用正则表达式提取出文件名字中数字部分。注意,数字带有小数点。 然后封装成集合对象。对象中两个属性:文件名称,金额。怎么写
- 工作小总结&小工具类
- 时间:2025-01-15 23:13
- 26人已阅读
简介
需求:JAVA根据指定目录:C:\Users\n\Desktop\地铁发票这个文件夹中获取所有文件名称。然后使用正则表达式提取出文件名字中数字部分。注意,数字带有小数点。然后封装成集合对象。对象中两个属性:文件名称,金额,同时计算出总额。怎么写?要实现你的需求,可以按照以下步骤进行:遍历指定目录:使用File类获取该目录下所有文件。使用正则表达式提取文件名称中的数字部分:正则表达式可以提取文件名中
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
需求:
JAVA 根据指定目录:C:\Users\n\Desktop\地铁发票 这个文件夹中获取所有文件名称。然后使用正则表达式提取出文件名字中数字部分。注意,数字带有小数点。
然后封装成集合对象。对象中两个属性:文件名称,金额,同时计算出总额。怎么写 ?
要实现你的需求,可以按照以下步骤进行:
遍历指定目录:使用
File
类获取该目录下所有文件。使用正则表达式提取文件名称中的数字部分:正则表达式可以提取文件名中的金额(数字和小数点)。
封装成对象:创建一个对象存储文件名和提取出的金额。
将对象添加到集合中:使用
List
或其他集合类型来存储这些对象。
下面是完整的代码示例:
import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class FileNameExtractor { // 定义一个类来存储文件名和金额 public static class FileAmount { private String fileName; private double amount; public FileAmount(String fileName, double amount) { this.fileName = fileName; this.amount = amount; } public String getFileName() { return fileName; } public double getAmount() { return amount; } @Override public String toString() { return "FileName: " + fileName + ", Amount: " + amount; } } public static void main(String[] args) { // 目录路径 String directoryPath = "C:\\Users\\n\\Desktop\\地铁发票"; // 获取指定目录下的所有文件 File directory = new File(directoryPath); File[] files = directory.listFiles(); if (files != null) { // 存储文件名和金额的集合 List<FileAmount> fileAmounts = new ArrayList<>(); // 总金额的累加器 double totalAmount = 0; // 正则表达式匹配数字(包括小数点) Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?"); for (File file : files) { if (file.isFile()) { String fileName = file.getName(); Matcher matcher = pattern.matcher(fileName); // 如果匹配到数字 if (matcher.find()) { String numberStr = matcher.group(); try { // 将字符串转换为数字 double amount = Double.parseDouble(numberStr); // 创建FileAmount对象并加入集合 fileAmounts.add(new FileAmount(fileName, amount)); // 累加金额 totalAmount += amount; } catch (NumberFormatException e) { System.out.println("无法解析金额:" + numberStr); } } } } // 输出所有提取的结果 for (FileAmount fileAmount : fileAmounts) { System.out.println(fileAmount); } // 输出总金额 System.out.println("Total Amount: " + totalAmount); } else { System.out.println("目录不存在或无法访问"); } } }
totalAmount
:我们新增了一个double
类型的变量totalAmount
,用来累加所有提取出来的金额。金额累加:在每次成功解析出金额并创建
FileAmount
对象后,我们就把金额加到totalAmount
上。输出总金额:在输出文件名和金额后,程序会额外输出总金额。
示例输出:
假设文件名为:
发票123.45.pdf
发票678.90.txt
程序的输出会是:
yaml复制代码FileName: 发票123.45.pdf, Amount: 123.45FileName: 发票678.90.txt, Amount: 678.90Total Amount: 802.35
上一篇: Linux 软连映射问题
下一篇: 分库分表用同一算法会有什么问题