Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.test.level18.lesson10.home10;
- /* Собираем файл
- Собираем файл из кусочков
- Считывать с консоли имена файлов
- Каждый файл имеет имя: [someName].partN. Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37.
- Имена файлов подаются в произвольном порядке. Ввод заканчивается словом "end"
- В папке, где находятся все прочтенные файлы, создать файл без приставки [.partN]. Например, Lion.avi
- В него переписать все байты из файлов-частей используя буфер.
- Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, ..., в конце - последнюю.
- Закрыть потоки. Не использовать try-with-resources
- */
- import java.io.*;
- import java.util.Map;
- import java.util.TreeMap;
- public class Solution {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- String fileName;
- boolean stopInput = false;
- TreeMap<Integer, String> fileList = new TreeMap<Integer, String>();
- while (!stopInput) {
- fileName =reader.readLine();
- if (fileName.equals("end")) {
- stopInput = true;
- }
- else {
- fileList.put(returnIndex(fileName),fileName);
- }
- }
- reader.close();
- File newFile = new File(origFileName(fileList.firstEntry().getValue()));
- FileInputStream inputStream = null;
- FileOutputStream outputStream = new FileOutputStream(newFile,true);
- byte[] buffer = new byte[1000];
- for (Map.Entry<Integer,String> entry : fileList.entrySet()) {
- inputStream = new FileInputStream(entry.getValue());
- while (inputStream.available() > 0) //пока есть еще непрочитанные байты
- {
- // прочитать очередной блок байт в переменную buffer и реальное количество в count
- int count = inputStream.read(buffer);
- outputStream.write(buffer, 0, count); //записать блок(часть блока) во второй поток
- }
- }
- reader.close();
- inputStream.close(); //закрываем оба потока. Они больше не нужны.
- outputStream.close();
- }
- public static int returnIndex (String someName) {
- int i = someName.lastIndexOf(".part");
- return Integer.parseInt(someName.substring(i+5));
- }
- public static String origFileName (String input) {
- return input.substring(0,input.lastIndexOf(".part"));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement