嗨,我陷入了以下问题,我在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);
}
}
}
}
最佳答案
final File[] files = dir.listFiles((final File dirToFilter, final String filename) - filename.matcheS(regexField));
1)没有人(无论您是编译器还是您)都不了解从参数列表(- filename.matcheS(regexField))
)中减去 bool(boolean) 值的含义。再想想你想做什么。
2)您要在参数列表的中间定义变量(final File
,final String
),您应该在此处使用表达式(就像已经定义的并且在其他地方设置了值或常量)。我敢打赌,您会混淆定义的方法调用(或者您只是忘了填写IDE自动生成的代码)。
关于java - 如果发现预期的EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36099217/