鉴于我有以下Domain
,如果您愿意,可以为要传递的文件建模:
public class Report {
private String reportId;
private String reportName;
private String client;
private String format;
private Date cobDate;
private String filePath;
}
public enum ReportType {
PNL_REPORT("11", "pnlreport"),
BALANCE_SHEET("20", "balance"),
private final String reportId;
private final String name;
private ReportType(String reportId, String name) {
this.reportId = reportId;
this.name = name;
}
}
并且鉴于我有以下Service
实施:
@Service
public class FileService {
@Autowired
private FileRepository fileRepository;
public List<Report> getReport(String filePattern, String format) {
List<Report> reportDeliverables = new ArrayList<>();
List<File> filesToSend = fileRepository.getFilesToSend(sourcePath, filePattern, format);
\\C:\pathToReports\ClientABC\COB28Sep2017\pnlreport.pdf
\\return list of report objects, initialised.
}
}
我正在使用Java 8,并希望知道如何有效地将列表File
中的每个filesToSend
对象转换为Report
字段,如下所示:
reportID - &gt;派生自Enum查看id(名称匹配没有后缀的文件名)
reportName - &gt; pnlreport.pdf
客户 - &gt; clientABC
cobDate-&GT; 28-SEP-2017
格式 - &gt; PDF
filePath - &gt; C:\ pathToReports \ ClientABC \ COB28Sep2017 \ pnlreport.pdf
路径将始终包含客户端,cob日期,然后是报告文件的名称。
答案 0 :(得分:2)
就我未解决你的问题而言,有其解决方案。请注意,ReportFile中的正则表达式只满足类似Windows的文件路径。对于其他操作系统,还需要其他正则表达式。
b