[1] Вы переименовываете файл с именем 't' в новое имя, 'u' .., а затем удаляете файл с именем 'u'. Это звучит неправильно.
[2] когда ваше 'if' пропускает оператор nextLine, вы вообще не потребляете строку, что означает, что вы все равно получаете ВСЕ строки в выходном файле. Таким образом, даже когда c == ldel, вам нужно вызвать .readLine (), чтобы избавиться от него.
[3] В разных файловых системах переименование открытого файла не работает. Закрытые вызовы должны быть сделаны до того, как вы переименуете.
[4] else if (ldel == c) 'излишне; просто «еще» будет делать. В этом отношении, продолжение является излишним, продолжить просто означает завершить цикл и вернуться к началу. Это буквально ничего не делает, если это последняя вещь в цикле. Это последняя вещь в вашем цикле. Избавиться от этого полностью. Это не меняет того, что делает ваш код, но делает его легче для понимания.
[5] при открытии файлов для чтения / записи. Вы должны быть откровенны в отношении кодировки. FileWriter не позволяет вам. Не используйте этот класс. Посмотрите на новый файловый API и используйте что-то вроде Files.newInputStream
, обратите внимание, что вам придется изменить большую часть этого кода, чтобы использовать новый API, и это необязательное предложение по стилю.
[6] вы должны использовать конструкцию try-with-resources (поищите в интернете java try-with-resources, если вы не знаете, что это такое). Проблема с этим кодом в том, что он пропускает ресурсы при возникновении исключений. Для одноразового приложения (например, оно запускается, выполняет одно действие, а затем завершает работу) это не имеет значения, но если вы поместите этот код в более крупную конструкцию (скажем, например, это часть веб-сервера), оно ' со временем снесу всю ВМ. Лучше всего научиться открывать ресурсы с помощью конструкции try-with-resources.