Advertisement
jaVer404

level18.lesson10.home10(night_build2)

Jan 18th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.01 KB | None | 0 0
  1. package com.javarush.test.level18.lesson10.home10;
  2.  
  3. /* Собираем файл
  4. Собираем файл из кусочков
  5. Считывать с консоли имена файлов
  6. Каждый файл имеет имя: [someName].partN. Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37.
  7. Имена файлов подаются в произвольном порядке. Ввод заканчивается словом "end"
  8. В папке, где находятся все прочтенные файлы, создать файл без приставки [.partN]. Например, Lion.avi
  9. В него переписать все байты из файлов-частей используя буфер.
  10. Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, ..., в конце - последнюю.
  11. Закрыть потоки. Не использовать try-with-resources
  12. */
  13.  
  14.  
  15. import java.io.*;
  16. import java.util.Map;
  17. import java.util.TreeMap;
  18.  
  19. public class Solution {
  20.     public static void main(String[] args) throws IOException {
  21.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  22.         String fileName;
  23.         boolean stopInput = false;
  24.         TreeMap<Integer, String> fileList = new TreeMap<Integer, String>();
  25.         while (!stopInput) {
  26.             fileName =reader.readLine();
  27.             if (fileName.equals("end")) {
  28.                 stopInput = true;
  29.             }
  30.             else {
  31.                 fileList.put(returnIndex(fileName),fileName);
  32.             }
  33.         }
  34.         reader.close();
  35.  
  36.         File newFile = new File(origFileName(fileList.firstEntry().getValue()));
  37.  
  38.         FileInputStream inputStream = null;
  39.         FileOutputStream outputStream = new FileOutputStream(newFile,true);
  40.         byte[] buffer = new byte[1000];
  41.         for (Map.Entry<Integer,String> entry : fileList.entrySet()) {
  42.             inputStream = new FileInputStream(entry.getValue());
  43.             while (inputStream.available() > 0) //пока есть еще непрочитанные байты
  44.             {
  45.                 // прочитать очередной блок байт в переменную buffer и реальное количество в count
  46.                 int count = inputStream.read(buffer);
  47.                 outputStream.write(buffer, 0, count); //записать блок(часть блока) во второй поток
  48.             }
  49.         }
  50.         reader.close();
  51.         inputStream.close(); //закрываем оба потока. Они больше не нужны.
  52.         outputStream.close();
  53.     }
  54.  
  55.     public static  int returnIndex (String someName) {
  56.         int i = someName.lastIndexOf(".part");
  57.         return Integer.parseInt(someName.substring(i+5));
  58.     }
  59.  
  60.     public static String origFileName (String input) {
  61.         return input.substring(0,input.lastIndexOf(".part"));
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement