我需要获取文件的名称,该名称实际上以45- 某事 .log开头。我可以抓45,但不是其余的,因为某事由随机数组成。此外,此类文件已在服务器上,我需要事先查找。
我已尝试过以下内容:
<%
String line ="";
String file = "/tmp/smsrouter/" + pageContext.getAttribute("cid");
BufferedReader br = new BufferedReader(new FileReader(file));
int count = 0;
int lineNumber = 0;
while((line=br.readLine())!=null)
{
String[] parts = line.split("\\,");
lineNumber++;
if(parts[3].equals("0") && count < lineNumber)
{
count++;
}
}
count = (count/lineNumber)*100;
br.close();
%>
显然,它不会得到任何预期的结果。那我该怎么办?
答案 0 :(得分:1)
为什么不使用iterator / tmp / smsrouter / dir和匹配文件名?
File[] files = new File("/tmp/smsrouter/").listFiles();
for (File file : files) {
if (file.isDirectory()||!file.getName().startsWith("45-")) {
continue;
} else {
BufferedReader br = new BufferedReader(new FileReader(file));
int count = 0;
int lineNumber = 0;
while((line=br.readLine())!=null)
{
String[] parts = line.split("\\,");
lineNumber++;
if(parts[3].equals("0") && count < lineNumber)
{
count++;
}
}
count = (count/lineNumber)*100;
br.close();
}
}
可能你想要将计数逻辑提取到另一种方法。希望这有帮助。
在实际生产系统中不建议这样做,因为调用请求超时的时间可能很长。