如果

时间:2016-03-19 07:43:00

标签: java lambda compiler-errors file-handling checkstyle

您好我陷入了以下问题,我在if(files !=null)中遇到了一个checkstyle异常。所以它也无法编译。

这是我的代码:

private void printBeforeData(final int svrID, final PrintStream ps, final File dir) throws RemoteException {

    // 「p[サーバID].csv」は、メモリ上のデータを使用して生成するので、除く
    final String regexField = ELECTRIC_FILE + svrID + "\\.csv\\.[0-9]+$";
    final File[] files =  dir.listFiles((final File dirToFilter, final String filename) ->
        filename.matches(regexField));
    if (files != null) {
        // 昇順でソート
        final List<File> listFiles1 = Arrays.asList(files);
        Collections.sort(listFiles1, (f1, f2)
                -> ElectricPowerManager.getSuffixNo(f1) - ElectricPowerManager.getSuffixNo(f2));
        final StringBuilder strings = new StringBuilder();
        for (final File file: listFiles1) {
            try (BufferedReader br = Files.newBufferedReader(file.toPath())) {
                int cnt = 0;
                for (String line = br.readLine(); line != null; line = br.readLine()) {
                    strings.append(line);
                    strings.append(LINE_BREAK);
                    cnt++;
                    if (cnt == CASH_ROW) {
                        // 一定数溜め込んでからファイル出力
                        ps.print(strings.toString());
                        strings.delete(0, strings.length());
                        cnt = 0;
                    }
                }
                if (cnt > 0) {
                    ps.print(strings.toString());
                    strings.delete(0, strings.length());
                }
            } catch (final IOException e) {
                core.putSystemLog(this.getClass().getSimpleName() + "#" + METHOD_PRINT_BEFORE_DATA +
                        " Failed print Electric Data. serverID:" + svrID, e);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

final File[] files = dir.listFiles((final File dirToFilter, final String filename) - filename.matcheS(regexField));

1)没有人(编译器和你都没有)理解从参数列表(- filename.matcheS(regexField)))中减去布尔值意味着什么。再想一想你想要做什么。

2)你在参数列表的中间定义了变量(final Filefinal String),你应该在这里使用表达式(比如已经定义过的,并且在其他地方设置了值,或者常量)。我敢打赌你把方法调用与定义混淆(或者你只是忘了完成IDE自动生成的代码)。