Прошу помощи. Валидатор не принимает решение.
Большое спасибо.
Не принимает по условиям:
Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы.
В новый файл перепиши все байты из файлов-частей *.partN.
Чтение и запись должны происходить с использованием буфера.
Созданные для файлов потоки должны быть закрыты. (Поток записи в файл не был закрыт)
package com.javarush.task.task18.task1825;
import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Собираем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
Map<Integer, String> filesNames = new HashMap<Integer, String>();
Scanner scanner = new Scanner(System.in);
Pattern pattern = Pattern.compile("((.*\\\\).*\\.part(\\d+))");
String folderForOutput = null;
String currentFileAddress = null;
while (true) {
currentFileAddress = scanner.nextLine();
if (currentFileAddress.equals("end")) {
break; }
else
{
Matcher m = pattern.matcher(currentFileAddress);
while (m.find())
{ if (m.matches()) {
System.out.println(m.group());
int a = Integer.parseInt(m.group(3));
String fileName = m.group(1);
filesNames.put(a,fileName);
folderForOutput = m.group(2);
} } }
}
if (filesNames.size()>0)
{ FileOutputStream outputStream = new FileOutputStream(folderForOutput+"ResultFile.txt",true);
ArrayList<Integer> listOfFileOrder= new ArrayList<Integer>(filesNames.keySet());
Collections.sort(listOfFileOrder);
for (int i = 0; i < listOfFileOrder.size(); i++) {
FileInputStream stream = new FileInputStream(filesNames.get(listOfFileOrder.get(i)));
byte[] buffer = new byte[stream.available()];
stream.read(buffer);
stream.close();
outputStream.write(buffer);
}
outputStream.flush();
outputStream.close();
}
}
}
/*
C:\Users\PAulus\Desktop\Новая папка (2)\Text.part4.txt
C:\Users\PAulus\Desktop\Новая папка (2)\Text.part3.txt
C:\Users\PAulus\Desktop\Новая папка (2)\Text.part1.txt
C:\Users\PAulus\Desktop\Новая папка (2)\Text.part2.txt
end
Собираем файл
Собираем файл из кусочков.
Считывать с консоли имена файлов.
Каждый файл имеет имя: [someName].partN.
Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37.
Имена файлов подаются в произвольном порядке. Ввод заканчивается словом "end".
В папке, где находятся все прочтенные файлы, создать файл без суффикса [.partN].
Например, Lion.avi.
В него переписать все байты из файлов-частей используя буфер.
Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, ..., в конце - последнюю.
Закрыть потоки.
Требования:
1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "end".
2. Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы.
3. В новый файл перепиши все байты из файлов-частей *.partN.
4. Чтение и запись должны происходить с использованием буфера.
5. Созданные для файлов потоки должны быть закрыты.
6. Не используй статические переменные.
*/