Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 07.05.2020
Сообщений: 1
1

Соединить все файлы в один, а потом рассоединить

07.05.2020, 21:26. Показов 1490. Ответов 2

Author24 — интернет-сервис помощи студентам
Необходимо сделать программу, которая будет записывать несколько файлов в один, а затем доставать оттуда все или определённые файлы.
Пока пытаюсь достать все файлы, но и это не удаётся. Подскажите пожалуйста как правильно достать все файлы.
Заранее спасибо!

C#
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
static void Main(string[] args)
        {
            string video_from = @"V81103-092627.mp4";
            string archiv = @"C:\Users\Lenovo\Desktop\arc.a";
            string ico_from = "calc_113237.jpg";
            string gif_from = "y4.gif";
            string file_to = @"C:\Users\Lenovo\Desktop\test.mp4";
            string file_to2 = @"C:\Users\Lenovo\Desktop\test2.jpg";
            string file_to3 = @"C:\Users\Lenovo\Desktop\test3.gif";
 
            var first_base = File.ReadAllBytes(video_from);
            var second_base = File.ReadAllBytes(ico_from);
            var third_base = File.ReadAllBytes(gif_from);
            
            string encode1 = Convert.ToBase64String(first_base);
            string encode2 = Convert.ToBase64String(second_base);
            string encode3 = Convert.ToBase64String(third_base);
            string[] files = new string[3] { file_to, file_to2, file_to3 };
 
            using (StreamWriter sw = new StreamWriter(archiv, false, System.Text.Encoding.Default))
            {
                sw.WriteLine(encode1);
                sw.WriteLine("\n");
                sw.WriteLine(encode2);
                sw.WriteLine("\n");
                sw.WriteLine(encode3);
            }
            using (StreamReader sr = new StreamReader(archiv))
            {
                string line;
                int a = 0;
                while ((line = sr.ReadLine()) != null)
                {                    
                    File.WriteAllBytes(files[a], Convert.FromBase64String(line));                   
                }
            }
            Console.WriteLine("OK");
            Console.ReadKey();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2020, 21:26
Ответы с готовыми решениями:

Как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать?
как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать в файл?

Соединить аудио файлы в один
Какой программой можно соединить несколько аудио файлов в один? Задача такая: Имеется много...

Упорядочить массивы по по убыванию, потом соединить массивы в один упорядоченный массив
Начала писать, запуталась Даны два одномерных массива состоящие из 10 целых чисел. Упорядочить...

Объединить несколько файлов в один файл, а потом добавлять туда еще файлы
Доброго времени суток. Вот вопрос, как объединить несколько файлов, а потом при потребности...

2
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
07.05.2020, 22:35 2
Лучший ответ Сообщение было отмечено Qu11 как решение

Решение

Qu11, в коде две ошибки

1) В файл записываются лишние переводы строки потому что, сначала вызывается WriteLine, а следом записывается перевод строки. Метод WriteLine сам добавляет перевод строки. Решение - убери sw.WriteLine("\n");

2) В цикле "распаковки" не изменяется значение переменной a. Решение - заменить files[a] на files[a++].

В целом решение выбрано неудачное. Base64 удлиняет файл и требует много памяти на кодирование/декодидирование. Лучше хранить даннные в виде байтов, а чтобы провести границу между данными нужно сделать простый индекс в виде например, номер файла - смещение от начала + длина.
0
1 / 1 / 0
Регистрация: 13.05.2014
Сообщений: 51
09.05.2020, 22:39 3
Я бы посмотрел в сторону готового пакета из NuGet, например, реализации tar-а.
0
09.05.2020, 22:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2020, 22:39
Помогаю со студенческими работами здесь

Создать файл целых чисел. За один просмотр файла вывести на экран сначала все четные числа, а потом все нечетные
Помогите пожалуйста написать программу. Создать файл целых чисел. За один просмотр файла вывести на...

Как соединить все три ведомости в один код?
Доброго времени суток уважаемые! Возник следующий вопрос: В прикрепленной фотографии... Есть №...

Сервер получает файлы от клиента, склеивает все полученные файлы в один большой. Протокол взаимодействия UDP
Дали задание, надеюсь на вашу помощь или быть может есть какие-то исходники, буду рад любой помощи....

При включении компьютера все кулера делают один оборот потом останавливаются
Помогите пожалуйста! При включении компьютера все кулера делают один оборот потом останавливаются,...

Выбрать все файлы определенного типа из папки, чтобы потом запустить их
Здравствуйте, нужна помощь для написания батника. вот часть задания: надо выбрать все файлы...

Вставка картинок во все найденные Excel-файлы, попутно объединяя все PDF в один
В общем, в чем проблема. Как сделать, чтоб при запуске программы открывалось окно, в нем выбиралась...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru