package com javarush test level18 lesson10 home10 Собираем файл Собира

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.javarush.test.level18.lesson10.home10;
/* Собираем файл
Собираем файл из кусочков
Считывать с консоли имена файлов
Каждый файл имеет имя: [someName].partN. Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37.
Имена файлов подаются в произвольном порядке. Ввод заканчивается словом "end"
В папке, где находятся все прочтенные файлы, создать файл без приставки [.partN]. Например, Lion.avi
В него переписать все байты из файлов-частей используя буфер.
Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, ..., в конце - последнюю.
Закрыть все потоки ввода-вывода
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> filePath = new ArrayList<String>();
String s;
while (!"end".equals(s = reader.readLine())) {
filePath.add(s);
}
System.out.println("До сортировки - " + filePath);
for (int i = 0; i < filePath.size(); i++)
{
for (int j = 0; j < filePath.size()-1; j++)
{
int part1 = Integer.parseInt(filePath.get(j).substring(filePath.get(j).indexOf(".part") + 5));
int part2 = Integer.parseInt(filePath.get(j+1).substring(filePath.get(j+1).indexOf(".part") + 5));
if (part1 > part2){
String data = "";
data = filePath.get(j);
filePath.set(j, filePath.get(j + 1));
filePath.set(j + 1, data);
}
}
}
System.out.println("После сортировки - " + filePath);
File file = new File(filePath.get(0));
String []splitFileName = file.getName().split("\\.");
String originalFileName = "";
for (int i = 0; i < splitFileName.length-1; i++)
{
if (i == splitFileName.length-2) originalFileName += splitFileName[i];
else originalFileName += splitFileName[i] + ".";
}
System.out.println(originalFileName);
//c:\Lion.txt.part
String newFileName = "";
if (file.getParent() != null) newFileName = file.getParent() + "\\" + originalFileName;
else newFileName = originalFileName;
File newFile = new File(newFileName);
newFile.createNewFile();
System.out.println(filePath.get(0) + " Первый в масиве");
String fileName = filePath.get(0);
if ((new File(fileName)).exists()) {
System.out.println(fileName + " существует");
} else {
System.out.println(fileName + " не существует");
}
FileOutputStream outputStream = new FileOutputStream(newFile);
for (String x: filePath){
FileInputStream inputStream = new FileInputStream(x);
byte []bytes = new byte[inputStream.available()];
inputStream.read(bytes);
outputStream.write(bytes);
inputStream.close();
}
outputStream.close();
reader.close();
} //c:\\Lion.txt.part
}