Advertisement
jaVer404

level18.lesson10.home10(RC1)_not tested

Jan 19th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.87 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. import java.io.*;
  15. import java.util.Map;
  16. import java.util.TreeMap;
  17.  
  18. public class Solution
  19. {
  20.     public static void main(String[] args) throws IOException
  21.     {
  22. /*--------------Put file names to list------------------------*/
  23.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  24.         boolean stopInput = false;
  25.         String fileToList;
  26.         TreeMap<Integer, String> fileList = new TreeMap<Integer, String>();
  27.         while (!stopInput)
  28.         {
  29.             fileToList = reader.readLine();
  30.             if (fileToList.equals("end"))
  31.             {
  32.                 stopInput = true;
  33.             } else
  34.             {
  35.                 try
  36.                 {
  37.                     fileList.put(getPartNum(fileToList), fileToList);
  38.                 }
  39.                 catch (Exception e)
  40.                 {
  41.                 }
  42.             }
  43.         }
  44.         String finalFileName = getOrigFile(fileList);
  45.         File finalFile = new File(finalFileName);
  46.         FileOutputStream toFile = new FileOutputStream(finalFile,true);
  47.         FileInputStream fileInputStream = null;
  48.         byte[]bytes = new byte[1024];
  49.         for (Map.Entry<Integer,String> entry :fileList.entrySet()) {
  50.             fileInputStream = new FileInputStream(entry.getValue());
  51.             int count = fileInputStream.read(bytes);
  52.             toFile.write(bytes,0,count);
  53.         }
  54.         fileInputStream.close();
  55.         toFile.close();
  56.         reader.close();
  57.     }
  58.  
  59.     public static int getPartNum(String givenName)
  60.     {
  61.         int i = givenName.lastIndexOf(".part");
  62.         return Integer.parseInt(givenName.substring(i + 5));
  63.     }
  64.  
  65.     public static String getOrigFile(TreeMap<Integer,String> someMap)
  66.     {
  67.         String someName = someMap.firstEntry().getValue();
  68.         return someName.substring(0,someName.indexOf(".part"));
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement