0

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();

      %>

明らかに、期待どおりの結果は得られません。それならどうすればいいですか?

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 に答える