public class DeleteAfter {
public void anySymbols(Path path, String count) {
File oldName;
File newName;
int formatOfFileSymbols = 4 + Integer.parseInt(count);
try (DirectoryStream<Path> files = Files.newDirectoryStream(path)) {
for (Path abc : files) {
StringBuilder stringBuilder = new StringBuilder();
String tmp = abc.toString();
String[] strings = tmp.split("\\\\");
if (strings[strings.length - 1].length() <= Integer.parseInt(count) + 4) {
continue;
} else {
for (int i = 0; i < strings.length; i++) {
if (i == strings.length - 1) {
strings[i] = strings[i];
}
else {
strings[i] = strings[i] + "\\\\";
}
stringBuilder.append(strings[i]);
}
oldName = new File(stringBuilder.toString());
stringBuilder.delete(stringBuilder.length() - formatOfFileSymbols, stringBuilder.length() - 4);
newName = new File(stringBuilder.toString());
oldName.renameTo(newName);
System.out.println(newName.toString());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
есть вот такой вот класс и метод который переименовывает файлы согласно коду, хочу узнать есть ли смысл здесь использовать буффередРидер или Райтер и обьясните пожлауйста в каких случаях лучше его использовать чем не использовать, много задач решаю и правильно но в решении везде используется буфферед, его нужно использовать каждый раз как работа идёт с IO дабы сохранить ресурсы железа я правильно понимаю ?
driftPilot
33 уровень
Подскажите кто разбирается)
Обсуждается
Комментарии (15)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Галкин Юрий
23 августа 2021, 20:56
буффередРидер тут совсем не нужен. Он для чтения содержимого. А судя по коду вы меняете свойства файлов. Это другое. Два совершенно разных процесса.
0
Галкин Юрий
22 августа 2021, 11:42
Код лучше оформлять красиво, чтобы другим удобнее было читать:
+1
Галкин Юрий
22 августа 2021, 11:45
Ну и как сам код оформит, мне нравится книга Роберта Мартина «Чистый код: создание, анализ и рефакторинг»
+1
driftPilot
23 августа 2021, 18:44
Спасибо имеется такая на очереди к прочтению) а здесь очень не чисто написано по вашемку?
0
driftPilot
23 августа 2021, 18:45
0
Галкин Юрий
23 августа 2021, 18:58
По-моему да можно гораздо "чище", но уверен найдётся много защитников именно такого письма, они поспорят со мной..
0
driftPilot
23 августа 2021, 18:59
я пока еще не могу отстаивать такое но если вам не сложно было бы очень интересно посмотреть как вы бы это переписали в чистоту, для личного опыта был бы очень благодарен и ко всему это писалось на скорую руку хотелось просто JavaFX опыта получить а не написание алгоритма)
0
Галкин Юрий
23 августа 2021, 19:42
Что-то типа такого. (Не отлаживал. Думаю надо хорошенько "доковырять напильником", так как мог логику вашу неполностью соблюсти).
0
Галкин Юрий
23 августа 2021, 20:54
Что я пытался тут добиться. Чтобы легко читалось. В первую очередь лёгкость понимания кода. Это нужно, чтобы код легко поддерживать любым программистом или мной же через неделю, другую. Потом уже лишнее убрать: лишние переменные, лишние операции, локальные переменные, живущие за пределами блоков, где они нужны. Подписал опирации, вынося их в методы. Имена методов и есть коментарии. Если писать малопонятный код, он будет продолжать быть ценным, пока он рабоает. Но если изменилтись обстоятельства или нашли баг. Сложный код проще выборосить, чем поддерживать.
+1
driftPilot
24 августа 2021, 07:41
да теперь вижу что можно было улучшить середину кода вынести в метод отдельный просто)
0
driftPilot
24 августа 2021, 07:42
Спасибо!
0
Галкин Юрий
24 августа 2021, 09:11
Да, разбиение кода на части методами -- хороший подход. Но надеюсь не только это удалось заметить. ( ͡~ ͜ʖ ͡°)
0
Галкин Юрий
22 августа 2021, 11:34
Посмотрите лекцию
BufferedReader -- нужен для чтения блоков char. Методы его таковы, что это удобнее. А ещё может быть важно что быстрее, так как работаете сразу с блоками, а не отдельными символами. Потому меньше системных вызовов, которые очень емкие.
+1
driftPilot
22 августа 2021, 11:35
Спасибо
0
Галкин Юрий
22 августа 2021, 11:42
Ещё присмотритесь к Class Scanner
+1