Учусь писать на Java, набросал код для склейки файлов(работает). Прошу указать в каких местах можно было бы сделать лучше(где я написал плохой код) + ответить на вопросы внизу.
Задание: Есть несколько файлов формата "filename.txt.partN". Ввести их имена с клавиатуры, затем создать в этом же каталоге файл "filename.txt" с последовательно записанными в нём данными. Имена вводятся в любом порядке. Ввод прекращается после ввода слова "end".
Так как в задании не нужно было проверять данные на корректность, проверок нет. Юзер "идеальный", только порядок файлов напутать может.
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
String fileName;
String sub = ".part";
String stopWord = "end";
byte[] buf = new byte[4096];
ArrayList<String> fileNameList = new ArrayList<>();
while (!(fileName = reader.readLine()).equals(stopWord)) {
fileNameList.add(fileName);
}
if (fileNameList.isEmpty()) {
System.out.println("Пустой лист.");
return;
}
fileNameList.sort(Comparator.comparingInt(o -> Integer.parseInt(o.substring(o.lastIndexOf(sub) + sub.length()))));
OutputStream fos = new FileOutputStream(new File(fileNameList.get(0).substring(0, fileNameList.get(0).lastIndexOf('.'))));
for (String partFile : fileNameList) {
InputStream is;
try {
is = new FileInputStream(partFile);
} catch (FileNotFoundException e) {
System.out.println("Файл " + partFile + " не найден.");
return;
}
int count = is.read(buf);
do {
fos.write(buf, 0, count);
}
while (count == buf.length);
is.close();
}
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
По вашему, ArrayList это правильный выбор? Или лучше было использовать TreeSet?
Если бы мне нужно было проверять каждый файл в списке, то что работало бы быстрее для разумного количества файлов: регулярка или сравнение с filename + sub?
Заранее благодарю.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пытаюсь перезаписать properties, в IDE все получается, а в jar вылетает исключение:
Необходимо расположить элементы в виде таблицыПосмотрев примере, понял что есть несколько способов
Использую SQLite для хранения и доступа к данным в андроид-приложенииЗадаю