Подскажите что не так, вроде все правильно сработано, но проверку не проходит.

    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.TreeSet;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        TreeSet<String> hash = new TreeSet<>();         //список имен файлов в порядке возврастания
        String s = reader.readLine();                   //считываем имя файла
            String name = s.substring(0, s.lastIndexOf("."));       //убирем символы после последней точки
        while (!s.equals("end")) {                      //проверяем не равно ли "end"
            hash.add(s);                                //добавляем в список
            s = reader.readLine();                      //считываем имя файла
        }
        FileInputStream fis;
        FileOutputStream fos = new FileOutputStream(name, true);    //инициализируем объект для записи, с возможностью дозаписи(если я правильно понял)
        for (String h : hash) {                                     //пробегаемся по списку имен фалов
            fis = new FileInputStream(h);                           //инициализируем объект по имени файла
            byte[] b = new byte[fis.available()];                   //инициализируем массив равный размеру файла
            while (fis.available()>0) {                             //если есть что-то, то
                fos.write(fis.read(b));                             //записываем буфер
            }
            fis.close();                                            //закрываем объект чтения
        }
        reader.close();                                             //закрываем объект чтения
        fos.close();                                                //закрываем объект записи
    }
}

задан 13 Окт '16, 09:22

kafka's gravatar image

kafka
1886
одобрено: 40%

закрыто 13 Сен, 13:34

AndyRad's gravatar image

AndyRad
13.1k29

Вопрос был закрыт по следующей причине: "Problem is not reproducible or outdated" AndyRad 13 Сен, 13:34


TreeSet для этой задачи не очень. Используйте обычный массив и сортируйте его.

Если непонятно почему TreeSet не очень - попробуйте вывести названия имён файлов, когда их хотя-бы больше 10. Будет: 1 10 11 2 3 4 5 6 7 8 9... Например.)

ссылка

опубликован 13 Окт '16, 14:07

%D0%9E%D1%82%D0%BC%D0%BE%D1%80%D0%BE%D0%B7%D0%BE%D0%BA's gravatar image

Отморозок
94919
одобрено: 43%

изменено 13 Окт '16, 14:24

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×764
×497
×80

Задан: 13 Окт '16, 09:22

Просмотров: 194 раз

Отредактирован: 13 Сен, 13:34