Java读取文件目录并创建指向pdf的链接
我试图完成的是读取文件目录并打印到pdf的链接,但更重要的是,一些pdf以123456_2018-01.pdf、456234_2018-01a.pdf或123456_2018-01结尾,后面有一些字母。我想不出我应该使用什么表达式来捕获当月的所有PDFJava读取文件目录并创建指向pdf的链接,java,Java,我试图完成的是读取文件目录并打印到pdf的链接,但更重要的是,一些pdf以123456_2018-01.pdf、456234_2018-01a.pdf或123456_2018-01结尾,后面有一些字母。我想不出我应该使用什么表达式来捕获当月的所有PDF for (File obj : contentsOfDirectory) { if (obj.isFile()) { if (!obj.getName().subst
for (File obj : contentsOfDirectory) {
if (obj.isFile()) {
if (!obj.getName().substring(0, 2).equals("._")) {
String file = "this is the file directory";
String pdfBills = file + obj.getName().toString();
String year = pdfBills.substring(pdfBills.lastIndexOf("_") + 1);
if (obj.getName().toString().endsWith("01.pdf")) {
%>
<li><a href=<%=pdfBills%>>January <%=year%></a><br> <%
} else if (obj.getName().toString().endsWith("02.pdf")) {
%>
<li><a href=<%=pdfBills%>>February <%=year%></a><br> <%
for(文件obj:contentsOfDirectory){
if(obj.isFile()){
如果(!obj.getName().substring(0,2).equals(“.”)){
String file=“这是文件目录”;
字符串pdfBills=file+obj.getName().toString();
字符串年份=pdfBills.substring(pdfBills.lastIndexOf(“”)+1);
if(obj.getName().toString().endsWith(“01.pdf”)){
%>
如果您没有查看文件名的结尾,而是检查了文件名的开头呢?看起来文件名的第一部分始终是YYYY-MM,您可以使用.substring()
解析出年份和月份,如下所示:
String year = pdfBills.substring(0, 4);
String month = pdfBills.substring(5, 7);
然后,您可以将月份数字字符串转换为可读的月份字符串,如下所示:
import java.text.DateFormatSymbols;
DateFormatSymbols symbols = new DateFormatSymbols();
int intMonth = Integer.parseInt(month);
String monthName = symbols.getMonths()[intMonth-1];
这对我来说似乎是一种问题,所以请使用类。通过积极匹配我们想要的内容,它会隐式忽略不一致的文件(如您的。
示例)
这可能有效,但我没有提到整个文件名类似于112323-001_2018-01,这是我没有说明的错误。在“_2018-01.pdf”之前的任何内容都是完全不相关的。我只关注“*”之后的信息。仅供参考obj.getName()。子字符串(0,2)
如果目录包含一个文件名,就会抛出一个字符。你能解释一下Pattern.compile部分吗?它正在做我想做的事情,我想把这段代码添加到我的其他项目中,我想知道它是如何确定的。在答案中添加了一些链接。Pattern.compile
创建了一个常规的表达式,可以多次使用它来匹配
输入字符串,如pdfBills
。我使用的正则表达式有两个“(捕获)(组)”,因此,当它匹配时,m.group(1)
包含年份等
final Pattern p = Pattern.compile(".*_(\\d{4})-(\\d{2})\\.pdf$");
for (File obj : contentsOfDirectory) {
if (obj.isFile())
String file = "this is the file directory";
String pdfBills = file + obj.getName().toString();
Matcher m = p.matcher(pdfBills);
if (m.matches()) {
int year = Integer.parseInt(m.group(1));
int month = Integer.parseInt(m.group(2));
// ... do stuff with year and month
}