このコードを使用してファイルを実行すると、最初は正常に動作しますが、 ですが、2番目の実行(同じファイル上)ではFiles.readAllLines
が例外をスローします。MalformedInputException:2回以上実行した場合の入力の長さ= 1
すべてのコードは(各ファイルについてですが、この場合は単なるものです) ファイルからすべての行を取得して削除してから、同じ内容で再充填します。
for (File file : content) {
List<String> fillLines = new ArrayList<>();
try {
fillLines = Files.readAllLines(file.toPath());
} catch (IOException e) {
e.printStackTrace();
}
if (fillLines.size() > 0) {
file.delete();
FileWriter fileWriter = new FileWriter(file, false);
for (String line : fillLines) {
fileWriter.write(line);
if (fillLines.indexOf(line) < fillLines.size() - 1)
fileWriter.append(System.lineSeparator());
}
fileWriter.close();
}
}
fileWriter.append(System.lineSeparator());
のためでしょうか?
他のすべてのQuestioneerは、間違った文字セットで読むことで初めて失敗しました。しかし、私は一度それを実行することができるように、私は読んでいないが間違って何かを書いているので、charsetを変更することは避けることができる回避策のようです。
スタックトレース:
java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.nio.file.Files.readAllLines(Unknown Source)
at java.nio.file.Files.readAllLines(Unknown Source)
ここで、以下のものがFiles.readAllLines()のドキュメントから
fillLines = Files.readAllLines(file.toPath());
'このコードのファイル上で実行すると、うまく最初の時間を動作しますが、セカンドランで、Files.readAllLinesはException'を言っスロー - セカンドランで、あなたは、同じファイル名の第二の試みを意味しますか、またはループ内の2番目のファイル名。おそらく、2番目のファイルに問題があります。 – Eran
同じファイル上でプログラムを2回実行する – SlaxX
'fillLines.indexOf'は厄介です。あなたは索引ごとに行を反復しようとしましたか?また、例外を投稿することはできますか? – daniu