0

我需要获取实际上以 45- something.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();

      %>

显然,它不会像预期的那样得到任何结果。那我该怎么办?

4

1 回答 1

1

为什么不迭代 /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();
        }
    }

可能您想将计数逻辑提取到另一种方法。希望这有帮助。

在实际生产系统中不建议这样做,因为调用可能很长,可能会引发请求超时。

于 2012-11-21T05:21:20.007 回答