powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Заархивировать файлы
107 сообщений из 107, показаны все 5 страниц
Заархивировать файлы
    #38302041
sesh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите пож-ста, выгружаю 2 файла на сервер, затем мне надо их заархивировать, не пойму как можно это сделать
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302053
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302059
sesh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx
Прошу прощения, забыл написать .NET 2.0
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302060
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переходите на новый фреймворк
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302063
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302106
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганельбрррр чего это я
всё равно переходить нужно
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302163
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sesh,

винрар
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302195
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttsesh,

винрар
только этого не хватало под IIS
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302277
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttsesh,

винрар

Ты с дубу рухнул?

По теме. Лучше 7 зип обвязки, которая может сжимать поток без файлового оверхеда, не встречал. Но новые возможности четверки тоже гуд.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302316
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПаганельбрррр чего это я
всё равно переходить нужно хз я 2-го давно не видел
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302389
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx
Он не умеет паковать n файлов сразу. В топку.

Вот мой велосипед на штатном ZipPackage.

http://codearticles.ru/articles/1105

Если FW < 4.5, курим это: http://codearticles.ru/articles/1101
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302814
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Вот мой велосипед на штатном ZipPackage.

Ммм... File.ReadAllBytes... Шикарно.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302821
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобучcooldeveloper2Вот мой велосипед на штатном ZipPackage.

Ммм... File.ReadAllBytes... Шикарно.

Ты о чём?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302847
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чё-та Нахлобуч ляпнул какую-то глупость и слился...
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302931
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2,

... а MemoryStream.CopyTo вы по каким-то причинам не используете, или ...?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302932
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Ты о чём?Да о велосипеде твоем. Все прогрессивное человечество использует потоковый ввод-вывод, а ты данные с архивом целиком в памяти держишь.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302964
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобучcooldeveloper2Ты о чём?Да о велосипеде твоем. Все прогрессивное человечество использует потоковый ввод-вывод, а ты данные с архивом целиком в памяти держишь.
Ты перегрелся? Разуй глаза - мой велосипед работает только с потоками (через байтовый массив, без файлового оверхеда).
А File.ReadAllBytes, о котором ты заикнулся, тупой демо пример инициализации зип пакета - как и через что ты соберешь массив байт, монопенисуально. Главное в велосипед подать n байтовых массивов и он родит тебе зип пакет (тоже из байтового массива).
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38302972
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotik... а MemoryStream.CopyTo вы по каким-то причинам не используете, или ...?
Да как-то из FW < 4.0 перелезло сюда в код...
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303003
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Ты перегрелся? Разуй глаза - мой велосипед работает только с потоками
Что значит "работает только с потоками"? Тот факт, что он внутри у себя вызывает всякие .GetStream() и создает MemoryStream'ы, не значит что он использует потоковый ввод-вывод потому что...

cooldeveloper2...главное в велосипед подать n байтовых массивов и он родит тебе зип пакет (тоже из байтового массива).

А cooldeveloper2...(через байтовый массив, без файлового оверхеда). -- это вообще какой-то чад и угар кутежа
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303027
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучЧто значит "работает только с потоками"?
Это значит, что он работает с MemoryStream и только с ним. Следовательно следующее утверждение...

НахлобучТот факт, что он внутри у себя вызывает всякие .GetStream() и создает MemoryStream'ы, не значит что он использует потоковый ввод-вывод потому что...

есть масло масляное. "Он работает с MemoryStream, но при этом не использует потоковый ввод-вывод" - какой-то феерический бред.

Еще раз, для тех, кто заперся в танке и не хочет от туда выходить: в реализации используется MemoryStream. Вход выход - через массив байт. Точка.

Нахлобучэто вообще какой-то чад и угар кутежа
Чад с угаром, скорее всего, у того, кто "не использует потоковый ввод-вывод, но использует MemoryStream". Тут даже больше - клиника.

P.S. Еще раз задам вопрос, вижу у тебя трудности с ответом: к чему ты ляпнул какую-то хрень про File.ReadAllBytes? Причем тут, вообще, File.ReadAllBytes?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303047
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобуч,

смотри, чтобы тебе было проще ориентироваться в пространстве, я инициализировал пакеты для архива без File.ReadAllBytes. Только не спрашивай, как это мне удалось - не поверишь, это очень просто

http://codearticles.ru/articles/1105

А теперь повторяю десятый раз вопрос. Причем тут File.ReadAllBytes и зачем ты ляпнул вот это 14452467 ?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303058
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Еще раз, для тех, кто заперся в танке и не хочет от туда выходить: в реализации используется MemoryStream. Вход выход - через массив байт. Точка.Внутри он может хоть черта лысого использовать, но если в публичном API используются byte[], то это значит, что мне для получения Zip-архива нужно сначала считать в массив в памяти все исходные данные, затолкать в твой велосипед и на выходе получить еще один массив в памяти. Вот это -- все что угодно, но только не потоковый ввод вывод . И прочитай, пожалуйста, текст по ссылке, не соскакивай.

cooldeveloper2P.S. Еще раз задам вопрос, вижу у тебя трудности с ответом: к чему ты ляпнул какую-то хрень про File.ReadAllBytes? Причем тут, вообще, File.ReadAllBytes?При том, что File.ReadAllBytes прекрасно иллюстрирует ущербность такого подхода. Что делать с файлами нетривиального размера?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303077
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучВнутри он может хоть черта лысого использовать, но если в публичном API используются byte[], то это значит, что мне для получения Zip-архива нужно сначала считать в массив в памяти все исходные данные, затолкать в твой велосипед и на выходе получить еще один массив в памяти.
Умничка, пятерка! А причем тут File.ReadAllBytes?

НахлобучВот это -- все что угодно, но только не потоковый ввод вывод . И прочитай, пожалуйста, текст по ссылке, не соскакивай.
А что тут читать и соскакивать? Мне не нужны на входе и выходе стримы, мне нужен честный поток байтов, чтобы отправить его, например, в БД. Зачем мне тут стрим?

НахлобучПри том, что File.ReadAllBytes прекрасно иллюстрирует ущербность такого подхода. Что делать с файлами нетривиального размера?
Ущербность подхода в твоей голове, которая не понимает, что собрать байтовый массив можно любым другим способом. Сечешь фишку?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303083
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2мне нужен честный поток байтов, чтобы отправить его, например, в БД. Зачем мне тут стрим?
у меня когнитивный диссонанс возник
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303087
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилcooldeveloper2мне нужен честный поток набор байтов, чтобы отправить его, например, в БД. Зачем мне тут стрим?
у меня когнитивный диссонанс возник
Не придирайся, мысль понятна.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303092
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2,

я не придираюсь, для отправки BLOB в базу совершено необязательно(бывает и невозможно) весь BLOB предварительно помещать в массив
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303110
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cooldeveloper2Что делать с файлами нетривиального размера?
В зависимости от задачи. Если нужно писать в БД, то так или иначе нужна конвертация в массив байт. Так же если нужно файл снять с БД и отправить в Response клиенту - тоже нужна байтовая конвертация.
Для тех, кто окончательно заперся в танке: суть рецепта в том, чтобы показать, как можно удобно работать со штатным архиватором, а не в том, чтобы научить пользоваться стримом. Сечешь фишку?
Для тех, кому нужна работа именно через стрим, пишется по аналогии еще один метод:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public static MemoryStream Create(params ZipMemory[] data)
{
    var stream = new MemoryStream();
    var package = ZipPackage.Open(stream, FileMode.Create);
    foreach (var file in data)
    {
        Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(file.FileName, UriKind.Relative));
        PackagePart packagePartDocument = package.CreatePart(partUriDocument, string.Empty);
        file.Body.CopyTo(packagePartDocument.GetStream());
    }
    package.Close();
    return stream;
}



В чем проблема?

P.S. Для ряда задач требовалось работать исключительно с массивом байт и только с ним. Так ты ответь на вопрос, с массивом байт запрещено работать, что ли?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303119
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилдля отправки BLOB в базу совершено необязательно(бывает и невозможно) весь BLOB предварительно помещать в массив
Для 99.9% задач (особенно для EF и L2S) требуется обязательно помещать такой объект в массив. Читать про System.Data.Linq.Binary и иже.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303120
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Умничка, пятерка! А причем тут File.ReadAllBytes?
Повторю:

НахлобучПри том, что File.ReadAllBytes прекрасно иллюстрирует ущербность такого подхода. Что делать с файлами нетривиального размера?
И ты так и не сказал, как мне быть с большими файлами. Тоже в память читать?

cooldeveloper2А что тут читать и соскакивать? Мне не нужны на входе и выходе стримы, мне нужен честный поток байтов, чтобы отправить его, например, в БД. Зачем мне тут стрим?Так ты прочитал? И скажи, ты различаешь понятия "поток" и "массив"? Допущу, что это опечатка, но это не отменяет следующего наблюдения.

Если тебе "не нужные на входе и выходе стримы", то это совершенно не значит, что они не нужны остальным. Форум читают люди разного уровня и новички вполне могут взять и скопировать твой код как есть. Если принять сам феномен карго-культа в программировании как данность, то остается безрадостный факт: в их проект попадет код, который в общем случае будет заваливать систему по OutOfMemoryException. Коли ты решил делиться знаниями, то делай это со всей ответственностью. В интернете и так хватает плохого кода.

cooldeveloper2Ущербность подхода в твоей голове, которая не понимает, что собрать байтовый массив можно любым другим способом. Сечешь фишку?Давай ты уже вырастешь над собой и прекратишь использовать аргументацию ad hominem?

К тому же, решение а-ля
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class ZipArray : IDisposable
{
    public ZipArray(Stream outputStream)
    {
        // ...
    }

    public void Add(Stream inputStream)
    {
        // ...
    }

    public void Flush()
    {
        // ...
    } 
}


будет гораздо более общно и менее ресурсоемко твого жонглирование массивами байтов.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303122
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Если нужно писать в БД, то так или иначе нужна конвертация в массив байт.
чанками (chunk) писать религия запрещает?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303140
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2
Код: c#
1.
2.
3.
4.
5.
6.
public static MemoryStream Create(params ZipMemory[] data)
{
    var stream = new MemoryStream();
    // ...
    return stream;
}



В чем проблема?
Nice try, bro. Давай пока не касаться зверя под названием ZipMemory.

Скажи мне, архив где будет сформирован? Мне кажется, что он снова целиком окажется в памяти.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303152
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучИ ты так и не сказал, как мне быть с большими файлами. Тоже в память читать?
Выше написал.

НахлобучТак ты прочитал? И скажи, ты различаешь понятия "поток" и "массив"? Допущу, что это опечатка, но это не отменяет следующего наблюдения.
Что ты куришь там у себя? Еще раз повторяю, рецепт сделан только под байтовый обмен. Если нужна адаптация под потоковый ввод вывод, класс дополняется еще двумя методами. В чем проблема?

НахлобучЕсли тебе "не нужные на входе и выходе стримы", то это совершенно не значит, что они не нужны остальным.
Если другим нужны стримы, то это совершенно не значит, что они должны фигурировать в моем рецепте, который учит работать с классом ZipPackage.

НахлобучФорум читают люди разного уровня и новички вполне могут взять и скопировать твой код как есть.
Его и так можно копировать как есть, он полностью рабочий и отлаженный. Заточен только под байтовые операции.

НахлобучДавай ты уже вырастешь над собой и прекратишь использовать аргументацию ad hominem?
Давай ты уже поумнеешь и начнешь аргументировать по существу, а не лишь бы ляпнуть.

НахлобучК тому же, решение а-ля будет гораздо более общно и менее ресурсоемко твого жонглирование массивами байтов.
Не принципиально абсолютно. Для стримов можно ввести второй класс.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303165
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилcooldeveloper2Если нужно писать в БД, то так или иначе нужна конвертация в массив байт.
чанками (chunk) писать религия запрещает?
Пример чанков MemoryStream для EF в студию.

P.S. Даже SqlFileStream (SQL Server FileStream) читает только массив байт. В чем проблема?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303168
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобучcooldeveloper2
Код: c#
1.
2.
3.
4.
5.
6.
public static MemoryStream Create(params ZipMemory[] data)
{
    var stream = new MemoryStream();
    // ...
    return stream;
}



В чем проблема?
Nice try, bro. Давай пока не касаться зверя под названием ZipMemory.

Скажи мне, архив где будет сформирован? Мне кажется, что он снова целиком окажется в памяти.

Отгадай с двух раз?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ZipMemory
{
    public string FileName { get; set; }
    public MemoryStream Body { get; set; }
    public ZipMemory(string fileName, MemoryStream body)
    {
        FileName = fileName;
        Body = body;
    }
}
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303211
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучЕсли тебе "не нужные на входе и выходе стримы", то это совершенно не значит, что они не нужны остальным
Вопрос для теоретиков, которые много думают, но мало делают: рассмотрим штатный класс SqlFileStream , который предназначен для работы с MS SQL FileStream. Почему разработчики класса предусмотрели Read / Write только для байтового массива?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303229
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Вопрос для теоретиков, которые много думают, но мало делают: рассмотрим штатный класс SqlFileStream , который предназначен для работы с MS SQL FileStream. Почему разработчики класса предусмотрели Read / Write только для байтового массива?Раз уж ты заговорил, то рассмотри за компанию штатные классы FileStream, MemoryStream и прочих наследников Stream. Я уверен, что ты заметишь предусмотренные разработчиками методы ReadByte/WriteByte. Следовательно, твой аргумент некорректент.

Скажи мне лучше: ты различаешь принципиальную разницу между "считать все данные в память и создать архив в памяти" и "считать часть данных из потока, заархивировать и положить в другой поток"? Какой подход, по твоему мнению несомненного практика, который много делает, обладает большей общностью?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303231
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Выше написал.Это ты про public static MemoryStream Create(params ZipMemory[] data)? Извини, незачет -- все как было в памяти, так и остается.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303252
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучРаз уж ты заговорил, то рассмотри за компанию штатные классы FileStream, MemoryStream и прочих наследников Stream. Я уверен, что ты заметишь предусмотренные разработчиками методы ReadByte/WriteByte. Следовательно, твой аргумент некорректент.
Не торопи коней с некорректностью. Итак, у меня есть файл на диске. Через File.OpenRead я инстанциирую честный FileStream для дескриптора этого файла. Пока всё хорошо, никаких преобразований в массив байт. Теперь мне нужно отправить этот файл в FILESTREAM сиквел сервера. Как раз для этих телодвижений используется SqlFileStream. Твои действия?

НахлобучСкажи мне лучше: ты различаешь принципиальную разницу между "считать все данные в память и создать архив в памяти" и "считать часть данных из потока, заархивировать и положить в другой поток"? Какой подход, по твоему мнению несомненного практика, который много делает, обладает большей общностью?
Отвечаю на заданный вопрос: я различаю (причем, принципиально) понятия "считать всё" и "считать только порцию". Так вот открою тебе истину: для большинства задач требуется именно работать с байтовыми операциями, а не с потоковыми. Примеры я приводил: считать / записать файл в базу, отправить файл в Response клиенту через Response.BinaryWrite, прочиать аплоад, снять массив байт с устройства, ну и так далее.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303253
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2НахлобучЕсли тебе "не нужные на входе и выходе стримы", то это совершенно не значит, что они не нужны остальным
Вопрос для теоретиков, которые много думают, но мало делают: рассмотрим штатный класс SqlFileStream , который предназначен для работы с MS SQL FileStream. Почему разработчики класса предусмотрели Read / Write только для байтового массива?самый универсальный метод.
в том числе для потоковой обработки: прочитал 1024 байта, обработал, отправил в респонс или куда там, и т.д.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303255
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобучcooldeveloper2Выше написал.Это ты про public static MemoryStream Create(params ZipMemory[] data)? Извини, незачет -- все как было в памяти, так и остается.
Присаживайся, двойка. Память чиста как девственный лес, имеется только указатель на дескриптор файла.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303258
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Примеры я приводил: считать / записать файл в базу, отправить файл в Response клиенту через Response.BinaryWrite, прочиать аплоад, снять массив байт с устройства, ну и так далее.вот все эти вещи можно делать не целиком, а кусочками
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303259
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seshДобрый день, подскажите пож-ста, выгружаю 2 файла на сервер, затем мне надо их заархивировать, не пойму как можно это сделать
Чё-то я не понимаю. ТС Написал:"...выгружаю 2 файла на сервер, затем мне надо их заархивировать...". При чём здесь какие-то стримы и т.п.?

Вызовите внешнюю программу (см. System.Diagnostics.Process, по-моему), например rar.exe или ещё чего.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303260
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный Мечcooldeveloper2пропущено...

Вопрос для теоретиков, которые много думают, но мало делают: рассмотрим штатный класс SqlFileStream , который предназначен для работы с MS SQL FileStream. Почему разработчики класса предусмотрели Read / Write только для байтового массива?самый универсальный метод.
в том числе для потоковой обработки: прочитал 1024 байта, обработал, отправил в респонс или куда там, и т.д.
Именно, Меч. С байтами работать одно удовольствие - не нужно ничего диспоузить, не нужны никакие хендлы. Всё просто и очевидно: отдал байты, получил байты.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303262
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2очевидно: отдал байты, получил байты.
ВСЕ байты то зачем за один приём?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303266
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный Мечcooldeveloper2Примеры я приводил: считать / записать файл в базу, отправить файл в Response клиенту через Response.BinaryWrite, прочиать аплоад, снять массив байт с устройства, ну и так далее.вот все эти вещи можно делать не целиком, а кусочками
Ну вот я попросил Изопропила сделать чанкинг для EF. До сих пор пишет...
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303268
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилcooldeveloper2очевидно: отдал байты, получил байты.
ВСЕ байты то зачем за один приём?
А какие проблемы? Я кидаю файл в БД и руководствуюсь рекомендациями от MS по размеру блобов. Следовательно, никаких гигабайтов в базе не должно быть и в помине.
Где ответ на мой вопрос? 14453705
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303271
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2 отправить файл в Response клиенту через Response.BinaryWriteА чем Response.WriteFile не угодил?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303277
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariycooldeveloper2 отправить файл в Response клиенту через Response.BinaryWriteА чем Response.WriteFile не угодил?
А причем тут файл? Я прочитал из БД блоб (картинка) и хочу сразу отдать клиенту в Response. Ты предлагаешь картинку сохранять на диск?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303280
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariycooldeveloper2 отправить файл в Response клиенту через Response.BinaryWriteА чем Response.WriteFile не угодил?он тут не совсем в тему, но насколько я знаю, лучше юзать Response.TransmitFile
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303282
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык кто-нибудь ответит? 14454110
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303287
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeДык кто-нибудь ответит? 14454110 способ с винрар обсудили ранее и признали негодным )
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303290
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечShSergeДык кто-нибудь ответит? 14454110 способ с винрар обсудили ранее и признали негодным )
Я не про винрар говорил, а просто про рар из коммандной строки.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303291
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный МечAntonariyпропущено...
А чем Response.WriteFile не угодил?он тут не совсем в тему, но насколько я знаю, лучше юзать Response.TransmitFile
Response.TransmitFile - это по сути исправление убогого Response.WriteFile, который грузил файл в память апп сервера. Появился в .NET 2.0.

ShSergeДык кто-нибудь ответит? 14454110
Серж, запускать на сервере приложений какие-то левые exe - зло. Винрар платен. Винрар на сервере зло. А так да, хороший вариант
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303293
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShSergeЯростный Мечпропущено...
способ с винрар обсудили ранее и признали негодным )
Я не про винрар говорил, а просто про рар из коммандной строки.
А рар - это не винрар? :)
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303302
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Теперь мне нужно отправить этот файл в FILESTREAM сиквел сервера. Как раз для этих телодвижений используется SqlFileStream. Твои действия?
Очевидно, fileStream.CopyTo(sqlFileStream), который будет читать данные из fileStream в буфер (массив байт, если тебе угодно) и этот буфер записывать в sqlFileStream.

Ааа, это был хитрый план, я понял! Ты сейчас ухватишься за "массив байт" и засчитаешь мне слив, да? Хорошо, я напишу свой Copy:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public void Copy(Stream source, Stream destination)
{
    int result;
    while((result = source.ReadByte()) != -1)
    {
        destination.WriteByte((byte)result);
    }
}



Это как, потоковая операция или байтовая? Или интовая, может быть?

cooldeveloper2Так вот открою тебе истину: для большинства задач требуется именно работать с байтовыми операциями, а не с потоковыми. Да-да, срыв покровов. Осталось понять, что ты понимаешь под байтовыми операциями, а что под потоковыми. Если сойтись на определении из Вики , то

cooldeveloper2Примеры я приводил: считать / записать файл в базу Неверно. SqlFileStream, о котором ты говорит, это самый что ни наесть потоковый ввод-вывод. cooldeveloper2отправить файл в Response клиенту через Response.BinaryWrite Неверно, есть HttpResponse.OutputStream. cooldeveloper2прочиать аплоад Неверно, есть HttpPostedFile.InputStream или вообще HttpRequest.InputStream cooldeveloper2снять массив байт с устройстваВозможно
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303303
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2ShSergeпропущено...

Я не про винрар говорил, а просто про рар из коммандной строки.
А рар - это не винрар? :)
Это бесплатная штука, которая работает из-под коммандной строки.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303304
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Antonariycooldeveloper2отправить файл А причем тут файл ? Ни при чем конечно. Файл и файл — вообще ничего общего.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303305
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечно насколько я знаю, лучше юзать Response.TransmitFileОк, приму к сведению.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303314
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Присаживайся, двойка. Память чиста как девственный лес, имеется только указатель на дескриптор файла.Ты правда не понимаешь или придуриваешься?
Код: c#
1.
2.
3.
4.
5.
var zipMemory = new List<ZipMemory>();
foreach(var file in Directory.GetFiles(@"c:\windows\system32", "*.*"))
    zipMemory.Add(new ZipMemory(file, File.ReadAllBytes(file)));

var zipStream = Create(zipMemory.ToArray());


В памяти будет содержимое каждого файла из c:\windows\system32 плюс сам архив.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303326
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeЭто бесплатная штука, которая работает из-под коммандной строки.
кто разрешил процессы запускать?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303339
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучАаа, это был хитрый план, я понял! Ты сейчас ухватишься за "массив байт" и засчитаешь мне слив, да? Хорошо, я напишу свой Copy
Глупенький, я тебе хочу объяснить на пальцах, что в большинстве задач вполне можно и нужно обходиться обычным байтовым массивом. Ты это уяснил? Далее. CopyTo появился только в WF 4.0, а как же быть FW 3.5 и ниже? Докладываю по существу, SqlFileStream не реализует загрузку данных из потока, разработчики не позаботились. Что и требовалось доказать.

НахлобучЭто как, потоковая операция или байтовая? Или интовая, может быть?
Зачем мне твои интовые операции, если я читаю файл с БД и отправляю его в Response клиенту? Или ты предлагаешь дополнительно его обернуть в MemoryStream и отдать через Response.OutputStream? Уволен без выплаты зарплаты.

НахлобучДа-да, срыв покровов. Осталось понять, что ты понимаешь под байтовыми операциями, а что под потоковыми.
Если у тебя туго с мозгами, что поясню: байтовые операции - это операции с byte[], потоковые - с Stream. Так лучше? До тебя ни у кого вопросов по этому поводу не возникало.

НахлобучНеверно. SqlFileStream, о котором ты говорит, это самый что ни наесть потоковый ввод-вывод
Присаживайся, двойка. У меня есть свой поток Stream, я его хочу загнать в SqlFileStream. Так вот SqlFileStream не поддерживает загрузки данных из потока. Для FW < 4.0. Именно про это я тебе и писал.

Нахлобучcooldeveloper2отправить файл в Response клиенту через Response.BinaryWrite Неверно, есть HttpResponse.OutputStream.
Садись, двойка. Ты предлагаешь читать файл из базы, создавать отдельный поток и отправлять его в OutputStream? Кхе..кхе.

НахлобучНеверно, есть HttpPostedFile.InputStream или вообще HttpRequest.InputStream
Зачем мне нужен поток, если я собираюсь писать пакет байт в БД?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303342
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилShSergeЭто бесплатная штука, которая работает из-под коммандной строки.
кто разрешил процессы запускать?
Всё, что не запрещено - разрешено.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303346
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariycooldeveloper2пропущено...
А причем тут файл ? Ни при чем конечно. Файл и файл — вообще ничего общего.
Ты выдрал из контекста: 14454143

cooldeveloper2Я кидаю файл в БД и руководствуюсь рекомендациями от MS по размеру блобов.

После того, как файл записан в БД, он перестает быть "файлом". Далее я его читаю как массив байт (тот же EF) и отправляю в Response. Итак, еще раз, причем тут файл?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303348
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2CopyTo появился только в WF 4.0, а как же быть FW 3.5 и ниже?А кто у нас на каждом углу вопит о переходе на последний фреймворк?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303351
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобучcooldeveloper2Присаживайся, двойка. Память чиста как девственный лес, имеется только указатель на дескриптор файла.Ты правда не понимаешь или придуриваешься?
Код: c#
1.
2.
3.
4.
5.
var zipMemory = new List<ZipMemory>();
foreach(var file in Directory.GetFiles(@"c:\windows\system32", "*.*"))
    zipMemory.Add(new ZipMemory(file, File.ReadAllBytes(file)));

var zipStream = Create(zipMemory.ToArray());


В памяти будет содержимое каждого файла из c:\windows\system32 плюс сам архив.

Ты головой тронулся? Еще раз смотри реализацию ZipMemory: 14453716
Какой нафик new ZipMemory(file, File.ReadAllBytes(file)) ???

Тебе бы пирожки печь, а не код писать.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303355
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Далее я его читаю как массив байт (тот же EF) и отправляю в Response.Если бы ты сразу писал грамотно, а не размазывал многозначительные сопли, вопросов бы не было.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303357
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariycooldeveloper2CopyTo появился только в WF 4.0, а как же быть FW 3.5 и ниже?А кто у нас на каждом углу вопит о переходе на последний фреймворк?
Я!

P.S. Коду сто лет, тем он и хорош, т.к. ZipPackage аж с FW 3.0.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303359
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariycooldeveloper2Далее я его читаю как массив байт (тот же EF) и отправляю в Response.Если бы ты сразу писал грамотно, а не размазывал многозначительные сопли, вопросов бы не было.
Ну а я виноват, что ты читаешь с середины, а не с начала дискуссии?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303363
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Antonariyпропущено...
Если бы ты сразу писал грамотно, а не размазывал многозначительные сопли, вопросов бы не было.
Ну а я виноват, что ты читаешь с середины, а не с начала дискуссии?Ты виноват в том, что в разных местах одну и ту же сущность называешь по-разному, и хрен поймешь, то ли случайно ошибся, то ли решил целенаправленно сдриснуть с темы.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303369
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyТы виноват в том, что в разных местах одну и ту же сущность называешь по-разному, и хрен поймешь, то ли случайно ошибся, то ли решил целенаправленно сдриснуть с темы.
Для тех, кто учавствует в дискусии, всё понятно. А те, кто пришел сюда чисто жалом водить и ныть, что им ничего не понятно, - в сад!
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303372
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2AntonariyТы виноват в том, что в разных местах одну и ту же сущность называешь по-разному, и хрен поймешь, то ли случайно ошибся, то ли решил целенаправленно сдриснуть с темы.
Для тех, кто учавствует в дискусии, всё понятно. А те, кто пришел сюда чисто жалом водить и ныть, что им ничего не понятно, - в сад! Отмазку галимей сложно представить :)
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303379
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyОтмазку галимей сложно представить :)
Ну а что мне ещё предложить тому, кто читает жопой да ещё и с середины темы? :)
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303383
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Глупенький, я тебе хочу объяснить на пальцах, что в большинстве задач вполне можно и нужно обходиться обычным байтовым массивом.Если это задачи уровня домашней работы -- то возможно.
cooldeveloper2CopyTo появился только в WF 4.0, а как же быть FW 3.5 и ниже?Самому написать, очевидно. cooldeveloper2Докладываю по существу, SqlFileStream не реализует загрузку данных из потока, разработчики не позаботились. Что и требовалось доказать.Что в твоем понимании "загрузка данных из потока"?

cooldeveloper2НахлобучЭто как, потоковая операция или байтовая? Или интовая, может быть?
Зачем мне твои интовые операции, если я читаю файл с БД и отправляю его в Response клиенту? Или ты предлагаешь дополнительно его обернуть в MemoryStream и отдать через Response.OutputStream? Уволен без выплаты зарплаты.Повторю вопрос: это потоковая опеация или нет?

А я предлагаю в цикле считывать буфер из SqlFileStream и записывать его в OutputStream.

cooldeveloper2Если у тебя туго с мозгами, что поясню: байтовые операции - это операции с byte[], потоковые - с Stream. Так лучше? До тебя ни у кого вопросов по этому поводу не возникало.
stream.CopyTo(anotherStream) -- это какая операция?

cooldeveloper2Присаживайся, двойка. У меня есть свой поток Stream, я его хочу загнать в SqlFileStream. Так вот SqlFileStream не поддерживает загрузки данных из потока. Для FW < 4.0. Именно про это я тебе и писал.Начнем с того, что SqlFileStream в принципе появился только в 4.0. Покажи лучше, как он таки научился загружать данные из потока в .NET 4.0+

cooldeveloper2Садись, двойка. Ты предлагаешь читать файл из базы, создавать отдельный поток и отправлять его в OutputStream? Кхе..кхе.Я писал как я предлагаю. Но могу и повторить -- в цикле считывать буфер из SqlFileStream и записывать его в OutputStream.

cooldeveloper2Зачем мне нужен поток, если я собираюсь писать пакет байт в БД?С точностью до наоборот -- в цикле читаем буфер из InputStream и пишем его в SqlFileStream.

cooldeveloper2Ты головой тронулся? Еще раз смотри реализацию ZipMemory: 14453716
Какой нафик new ZipMemory(file, File.ReadAllBytes(file)) ???

Тебе бы пирожки печь, а не код писать.
Нивапрос,
Код: c#
1.
2.
3.
4.
5.
var zipMemory = new List<ZipMemory>();
foreach(var file in Directory.GetFiles(@"c:\windows\system32", "*.*"))
    zipMemory.Add(new ZipMemory(file, new MemoryStream(File.ReadAllBytes(file))));

var zipStream = Create(zipMemory.ToArray());


Сути дела не меняет -- в памяти по-прежнему будет содержимое каждого файла из c:\windows\system32 плюс сам архив.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303384
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилушка, алё?

Я всё ещё жду чанкинга для EF.

Поторопись, родненький...
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303389
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2AntonariyОтмазку галимей сложно представить :)
Ну а что мне ещё предложить тому, кто читает жопой да ещё и с середины темы? :)Громкое заявление для того, кто жопой пишет
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303396
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Изопропилушка, алё?

Я всё ещё жду чанкинга для EF.

Поторопись, родненький...

без EF жизни нет?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303416
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучЕсли это задачи уровня домашней работы -- то возможно.
А что, уровень "не домашней" работы - это код только с наличием Stream? Сходи в сад и повесели детишек.

Нахлобучcooldeveloper2CopyTo появился только в WF 4.0, а как же быть FW 3.5 и ниже?Самому написать, очевидно.
Ай, умничка - что и требовалось доказать. Точно так же и здесь, нужен именно Stream в моем классе, берешь и дописываешь реализацию (пара строк кода).

Нахлобучcooldeveloper2Докладываю по существу, SqlFileStream не реализует загрузку данных из потока, разработчики не позаботились. Что и требовалось доказать.Что в твоем понимании "загрузка данных из потока"?
Слушай, тебе и в жизни всё нужно разжевывать и класть в рот? Мы же уже всё обговорили выше и ты, вроде как, понял всё...
Речь о [Файл] => [Stream] => [Load to SqlFileStream] => [БД]

НахлобучЗачем мне твои интовые операции, если я читаю файл с БД и отправляю его в Response клиенту? Или ты предлагаешь дополнительно его обернуть в MemoryStream и отдать через Response.OutputStream? Уволен без выплаты зарплаты.Повторю вопрос: это потоковая опеация или нет? [/quot]
Response.OutputStream - конечно потоковая. Теперь ты мне ответь на вопрос: зачем мне твои интовые операции, если я читаю файл с БД и отправляю его в Response клиенту? Или ты предлагаешь дополнительно его обернуть в MemoryStream и отдать через Response.OutputStream?

НахлобучА я предлагаю в цикле считывать буфер из SqlFileStream и записывать его в OutputStream.
Да ты ж мой хороший - а я предлагаю дописать еще один метод к моему классу, который работает с MemoryStream. Вопросы, пожелания?

Нахлобучcooldeveloper2Если у тебя туго с мозгами, что поясню: байтовые операции - это операции с byte[], потоковые - с Stream. Так лучше? До тебя ни у кого вопросов по этому поводу не возникало.
stream.CopyTo(anotherStream) -- это какая операция?
Потоковая.

НахлобучНачнем с того, что SqlFileStream в принципе появился только в 4.0. Покажи лучше, как он таки научился загружать данные из потока в .NET 4.0+
Опять двойка... Нахлобуч, так недолго и вылететь из школы. Не?
http://msdn.microsoft.com/ru-ru/library/system.data.sqltypes.sqlfilestream.aspx Поддерживается в версиях: 4.5, 4, 3.5 с пакетом обновления 1 (SP1), 3.0 с пакетом обновления 2 (SP2), 2.0 с пакетом обновления 2 (SP2)

Нахлобучcooldeveloper2Садись, двойка. Ты предлагаешь читать файл из базы, создавать отдельный поток и отправлять его в OutputStream? Кхе..кхе.Я писал как я предлагаю. Но могу и повторить -- в цикле считывать буфер из SqlFileStream и записывать его в OutputStream.
Ты смешал мух и котлет. Тут речь о EF и чтении блоба (varbinary(max), к примеру). Чтение напрямую блоба в EF и L2S маппится прямо в массив байт. Имея честный массив байт, нахрена мне еще OutputStream задействовать? Ппц, ты трудный...

Нахлобучcooldeveloper2Зачем мне нужен поток, если я собираюсь писать пакет байт в БД?С точностью до наоборот -- в цикле читаем буфер из InputStream и пишем его в SqlFileStream.
Ужос. Причем тут SqlFileStream? Ты, вообще, понимаешь, о чем речь? Дискутируем о блобе + EF и FILESTREAM, это как бы 2 темы. 1. Я привожу пример, что имея данные в блобе и работая с EF, никакие потоки нафик не нужны.
2. FILESTREAM. Я привожу пример с файлстримом в доказательство того, что методы работы иногда сводятся только к байтовым операциям. В доказательство я привел именно этот класс, разработчики которого забили на методы чтения с потока. Поэтому приходится пилить свои костыли (FW < 4.0)

Ау, ты в космосе, что ли?

НахлобучНивапрос,
Код: c#
1.
2.
3.
4.
5.
var zipMemory = new List<ZipMemory>();
foreach(var file in Directory.GetFiles(@"c:\windows\system32", "*.*"))
    zipMemory.Add(new ZipMemory(file, new MemoryStream(File.ReadAllBytes(file))));

var zipStream = Create(zipMemory.ToArray());


Сути дела не меняет -- в памяти по-прежнему будет содержимое каждого файла из c:\windows\system32 плюс сам архив.
Ты с дубу рухнул? Что это за гавнокод? Уволен без выплаты зарплаты!

Так надо:

Код: c#
1.
zipMemory.Add(new ZipMemory(file, File.OpenRead(file)));



Нахлобуч, ты меня пугаешь...
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303419
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariycooldeveloper2пропущено...
Ну а что мне ещё предложить тому, кто читает жопой да ещё и с середины темы? :)Громкое заявление для того, кто жопой пишет
Громкое заявление для читающих ею
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303432
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилcooldeveloper2Изопропилушка, алё?

Я всё ещё жду чанкинга для EF.

Поторопись, родненький...

без EF жизни нет?

Не вопрос, возьми классический ADO.NET. Ты блоб читаешь в поток?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303439
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cooldeveloper2Изопропилпропущено...


без EF жизни нет?

Не вопрос, возьми классический ADO.NET. Ты блоб читаешь в поток?

Ты конечно можешь сам принудительно читать блоб ридером через SqlDataReader.GetStream, но нафига это нужно? Речь о адаптерах и ридерах, которые вмапливают данные в DataTable. Какой стрим? Зачем?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303441
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, текущая тема - самая первая в топе на главной странице. Так что поаккуратнее выражайтесь.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303452
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2блоб ридером через SqlDataReader.GetStream, но нафига это нужно?
передать поток потребителю имеющему на входе поток.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303454
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cooldeveloper2cooldeveloper2пропущено...


Не вопрос, возьми классический ADO.NET. Ты блоб читаешь в поток?

Ты конечно можешь сам принудительно читать блоб ридером через SqlDataReader.GetStream, но нафига это нужно? Речь о адаптерах и ридерах, которые вмапливают данные в DataTable. Какой стрим? Зачем?
Это лишено всякого здравого смысла, т.к. нужно читать сразу в массив байт. Если блоб такой большой, что его напряжно загружать сразу в память, возникает вопрос, какого хрена он, вообще, у тебя в блобе сидит? Ведь по рекомендациям MS в блобах оптимальнее всего хранить файлы до 256Кб. Но даже самый экстремум, это 256Кб - 1Мб, где фрагментация будет более менее приемлема.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303458
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилcooldeveloper2блоб ридером через SqlDataReader.GetStream, но нафига это нужно?
передать поток потребителю имеющему на входе поток.
Пусть потребитель потребляет и массив байт. Не?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303466
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Пусть потребитель потребляет и массив байт. Не?
и так каждый в цепочке?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303468
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилcooldeveloper2Пусть потребитель потребляет и массив байт. Не?
и так каждый в цепочке?
Генерируешь условия на лету? Цепочки уже появились. Смотри, memory leak не отхвати в своих цепочках со стримами.
Чанкинг будет?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303493
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2НахлобучЧто в твоем понимании "загрузка данных из потока"?
Слушай, тебе и в жизни всё нужно разжевывать и класть в рот? Мы же уже всё обговорили выше и ты, вроде как, понял всё...
Речь о [Файл] => [Stream] => [Load to SqlFileStream] => [БД]Ты без стрелочек объясни. Как должна быть реализована операция "загрузить данные из потока"?

cooldeveloper2Нахлобуч
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public void Copy(Stream source, Stream destination)
{
    int result;
    while((result = source.ReadByte()) != -1)
    {
        destination.WriteByte((byte)result);
    }
}


Повторю вопрос: это потоковая опеация или нет?
Response.OutputStream - конечно потоковая.Ты на что отвечаешь? И как может быть название свойства (Response.OutputStream) операцией?

Еще раз: приведенный метод -- он реализует потоковую операцию копирования?

cooldeveloper2Теперь ты мне ответь на вопрос: зачем мне твои интовые операции, если я читаю файл с БД и отправляю его в Response клиенту? Или ты предлагаешь дополнительно его обернуть в MemoryStream и отдать через Response.OutputStream?Повторяю: предлагаю в цикле считывать буфер из SqlFileStream и записывать его в OutputStream. Ничего ничем оборачивать не надо, оставь свои домыслы при себе.

cooldeveloper2Нахлобучcooldeveloper2Если у тебя туго с мозгами, что поясню: байтовые операции - это операции с byte[], потоковые - с Stream. Так лучше? До тебя ни у кого вопросов по этому поводу не возникало.
stream.CopyTo(anotherStream) -- это какая операция?
Потоковая.Отлично. Запомним это.

cooldeveloper2НахлобучНачнем с того, что SqlFileStream в принципе появился только в 4.0. Покажи лучше, как он таки научился загружать данные из потока в .NET 4.0+
Опять двойка... Нахлобуч, так недолго и вылететь из школы. Не?
http://msdn.microsoft.com/ru-ru/library/system.data.sqltypes.sqlfilestream.aspx Поддерживается в версиях: 4.5, 4, 3.5 с пакетом обновления 1 (SP1), 3.0 с пакетом обновления 2 (SP2), 2.0 с пакетом обновления 2 (SP2)Ок, ошибся с версией фреймворка. И все же -- каким образом SqlFileStream научился загружать данные из потока в .NET 4.0?

cooldeveloper2Ты смешал мух и котлет. Тут речь о EF и чтении блоба (varbinary(max), к примеру). Чтение напрямую блоба в EF и L2S маппится прямо в массив байт. Имея честный массив байт, нахрена мне еще OutputStream задействовать? Ппц, ты трудный...Я про EF ни разу не упоминал даже.


cooldeveloper2НахлобучС точностью до наоборот -- в цикле читаем буфер из InputStream и пишем его в SqlFileStream.
Ужос. Причем тут SqlFileStream? Ты, вообще, понимаешь, о чем речь? Дискутируем о блобе + EF и FILESTREAM, это как бы 2 темы. 1. Я привожу пример, что имея данные в блобе и работая с EF, никакие потоки нафик не нужны.[/quot]Это не ко мне, повторяю. Я про EF с тобой не говорю. Плюс ты снова не в кассу.

cooldeveloper2Ау, ты в космосе, что ли?

НахлобучНивапрос,
Код: c#
1.
2.
3.
4.
5.
var zipMemory = new List<ZipMemory>();
foreach(var file in Directory.GetFiles(@"c:\windows\system32", "*.*"))
    zipMemory.Add(new ZipMemory(file, new MemoryStream(File.ReadAllBytes(file))));

var zipStream = Create(zipMemory.ToArray());


Сути дела не меняет -- в памяти по-прежнему будет содержимое каждого файла из c:\windows\system32 плюс сам архив.
Ты с дубу рухнул? Что это за гавнокод? Уволен без выплаты зарплаты!

Так надо:

Код: c#
1.
zipMemory.Add(new ZipMemory(file, File.OpenRead(file)));



Нахлобуч, ты меня пугаешь...
То есть ты хочешь сказать, что вот этот код скомпилируется?

Код: c#
1.
MemoryStream memoryStream = File.OpenRead("...");


Нет, МСУ, он не скомпилируется. Посему повторяю свое утверждение -- в памяти по-прежнему будет содержимое каждого файла из c:\windows\system32 плюс сам архив.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303565
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобучcooldeveloper2[Файл] => [Stream] => [Load to SqlFileStream] => [БД]Ты без стрелочек объясни. Как должна быть реализована операция "загрузить данные из потока"?
Слушай, я уже не знаю, как тебе и что объяснять. Сначала начал человеческим языком, потом стрелочками, теперь уж не знаю как.
1. Ну смотри, есть физический файл.
2. Ты создаешь поток, который ссылается только на его дескриптор (File.OpenRead).
3. Ремарка: надо загнать файл в FILESTREAM (это тип данных такой на сиквел сервере).
4. Реализация SqlFileStream не поддерживает использование FileStream = File.OpenRead напрямую. Да, в FW 4.0 появился у Stream новый метод CopyTo, который унаследовался и в SqlFileStream. Можно для задач с новым FW обойтись тупым CopyTo из FileStream. Но для FW < 4.0 приходится писать свой дополнительный код. О чем и речь. Разрабы не позаботились о том, чтобы пользователи класса напрямую с потока загружали в FILESTREAM сиквела данные. Только с массива байт (Read / Write). Мысль понятна?

НахлобучТы на что отвечаешь?
На твой вопрос.

НахлобучИ как может быть название свойства (Response.OutputStream) операцией?
У тебя проблемы с памятью? Вот тут ты меня спрашивал: 14454595
...Нахлобучcooldeveloper2Зачем мне твои интовые операции, если я читаю файл с БД и отправляю его в Response клиенту?
Повторю вопрос: это потоковая опеация или нет?
Причем тут "название свойства" Response.OutputStream? В вопросе четко говорится об операции "читать" и "отправлять". У меня складывается ощущение, что тебе больше нечего сказать и ты пишешь какую-то муть, лишь бы только всех запутать. Это так? Если это так, то я не вижу смысл дальнейшего обсуждения. Если есть что сказать по делу, с радостью послушаю.

НахлобучЕще раз: приведенный метод -- он реализует потоковую операцию копирования?
Response.OutputStream - это свойство, а не метод. Ты уж определись.

НахлобучПовторяю: предлагаю в цикле считывать буфер из SqlFileStream и записывать его в OutputStream. Ничего ничем оборачивать не надо, оставь свои домыслы при себе.
Код в студию.

Вот вариант SQL FILESTREAM бы без каких-либо циклов и прочей мути. Через родной Read(byte[]).

Код: c#
1.
2.
3.
4.
5.
6.
7.
command = new SqlCommand("SELECT GET_FILESTREAM_TRANSACTION_CONTEXT()", connection, transaction);
var context = (byte[])command.ExecuteScalar();
using (var stream = new SqlFileStream(path, context, FileAccess.Read))
{
    buffer = new byte[(int)stream.Length];
    stream.Read(buffer, 0, buffer.Length);
}



А потом тупо Response.BinaryWrite. Всё.

НахлобучОк, ошибся с версией фреймворка. И все же -- каким образом SqlFileStream научился загружать данные из потока в .NET 4.0?
Ты же сам ответил на этот вопрос тут: 14454271
Али забыл уже? Напомню, ты правильно ответил: fileStream.CopyTo(sqlFileStream)
Но этот вариант для 4.0 и выше. Для остальных случаев нужно писать педали.

Нахлобучcooldeveloper2Ты смешал мух и котлет. Тут речь о EF и чтении блоба (varbinary(max), к примеру). Чтение напрямую блоба в EF и L2S маппится прямо в массив байт. Имея честный массив байт, нахрена мне еще OutputStream задействовать? Ппц, ты трудный...Я про EF ни разу не упоминал даже.
Я упоминал. И приводил примеры респонза именно для блобов, а не для FILESTREAM. А ты взял и смешал всё в кучу. Не хорошо.

НахлобучЭто не ко мне, повторяю. Я про EF с тобой не говорю. Плюс ты снова не в кассу.
Смотри выше. Если про EF не говоришь, то и не нужно брать мои примеры про Response, которые касаются именно блобов. А то выдрал из контекста и сидишь умничаешь.

НахлобучТо есть ты хочешь сказать, что вот этот код скомпилируется?
Ты понял, что обосрался и решил придраться? Вот так скомпилируется:

Код: c#
1.
2.
3.
4.
5.
public class ZipMemory
{
    public string FileName { get; set; }
    public Stream Body { get; set; }
}



НахлобучНет, МСУ, он не скомпилируется. Посему повторяю свое утверждение -- в памяти по-прежнему будет содержимое каждого файла из c:\windows\system32 плюс сам архив.
Нет, Нахлобуч, он скомпилируется. И ты это знаешь. Посему, никакими загрузками в памяти тут и не пахнет.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303644
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper24. Реализация SqlFileStream не поддерживает использование FileStream = File.OpenRead напрямую.Чего-чего? Что значит "Реализация SqlFileStream не поддерживает использование FileStream = File.OpenRead напрямую"?

В общем, я понял. В терминологии ты не силен, в реальном использовании, судя по всему, тоже.

cooldeveloper2НахлобучПовторяю: предлагаю в цикле считывать буфер из SqlFileStream и записывать его в OutputStream. Ничего ничем оборачивать не надо, оставь свои домыслы при себе.
Код в студию.

Да пожалуйста, можешь даже в рецепты добавить.
Код: c#
1.
2.
3.
4.
5.
// ...
using (var sqlFileStream = new SqlFileStream(path, context, FileAccess.Read))
{
    sqlFileStream.CopyTo(Response.OutputStream);
}



cooldeveloper2Я упоминал. И приводил примеры респонза именно для блобов, а не для FILESTREAM. А ты взял и смешал всё в кучу. Не хорошо.Я про EF не упоминал, про него с другими беседуй.

cooldeveloper2Смотри выше. Если про EF не говоришь, то и не нужно брать мои примеры про Response, которые касаются именно блобов. А то выдрал из контекста и сидишь умничаешь.Я про EF не упоминал. Если отвечаешь мне -- от и отвечай на мои вопросы, а не занимайся фигурной резьбой по чужим цитатам.

Напомню ( 14454451 ):
cooldeveloper2Нахлобучпропущено...
Неверно, есть HttpResponse.OutputStream.
Садись, двойка. Ты предлагаешь читать файл из базы, создавать отдельный поток и отправлять его в OutputStream? Кхе..кхе.

НахлобучНеверно, есть HttpPostedFile.InputStream или вообще HttpRequest.InputStream
Зачем мне нужен поток, если я собираюсь писать пакет байт в БД?

cooldeveloper2НахлобучТо есть ты хочешь сказать, что вот этот код скомпилируется?
Ты понял, что обосрался и решил придраться? Вот так скомпилируется:

Код: c#
1.
2.
3.
4.
5.
public class ZipMemory
{
    public string FileName { get; set; }
    public Stream Body { get; set; }
}


Во какой ты джигит. Молодец. Но напомню -- тут ( 14453716 ) у тебя MemoryStream.

Даже если закрыть глаза на твое изменение условий на лету, то опять же -- у тебя останется куча незакрытых потоков и таки архив целиком в памяти. Опять незадача вышла. Что делать будешь? Снова на ходу код править?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303692
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучЧего-чего? Что значит "Реализация SqlFileStream не поддерживает использование FileStream = File.OpenRead напрямую"?
Только промежуточное копирование FileStream в SqlFileStream.

НахлобучВ общем, я понял. В терминологии ты не силен, в реальном использовании, судя по всему, тоже.
Всё намного хуже - ты облажался несколько раз и пытаешься соскачить в "терминологию", в "свойство" Response.OutputStream и в прочие не имеющие к делу определения. Забавно.

НахлобучДа пожалуйста, можешь даже в рецепты добавить.
Умничка. А я тебе про что битый час твержу?

Нахлобучcooldeveloper2Я упоминал. И приводил примеры респонза именно для блобов, а не для FILESTREAM. А ты взял и смешал всё в кучу. Не хорошо.Я про EF не упоминал, про него с другими беседуй.
Я ж тебе уже писал, тогда не влазь в этот разговор с "другим о EF. Там речь шла о блобах и респонзе, ты взял и вырвал респонз из контекста и прикрутил ко второй теме про FILESTREAM. Пришлось тебе примеры показывать и для FILESTREAM. Сам всех запутал, а виноваты я и "другой".
Тем не менее, давай поговорим об ORM. Не сцать.
Например, EF и L2S маппят блобы в массив байт. Никаких потоков. Что делать в этом случае? Или разработчики EF и L2S му**ки - должны были тебе выбросить стримовый сосок, через который ты дергал бы блобы? Горю желанием послушать твой высер на эту тему, любитель потоковой обработки данных.

НахлобучЯ про EF не упоминал. Если отвечаешь мне -- от и отвечай на мои вопросы, а не занимайся фигурной резьбой по чужим цитатам.
Ты про EF не упоминал, но вырвал из его контекста спич про респонз. Как понимать?

НахлобучВо какой ты джигит. Молодец. Но напомню -- тут ( 14453716 ) у тебя MemoryStream.
Ты ж мой хороший, неужели ты не понял с ходу, когда я про File.OpenRead написал?

Код: c#
1.
zipMemory.Add(new ZipMemory(file, File.OpenRead(file)));



Ведь даже студент бы понял, что речь идет о чистом потоке, без загрузки его в память. Но нет, ты придрался к банальному несоответствию Stream <=> FileStream и начал дальше слюни пускать, мол я не я, жопа не моя. Не стыдно? Ведь все поняли, о чем речь идет. Особенно когда ты жег напалном про:

Код: c#
1.
new ZipMemory(file, new MemoryStream(File.ReadAllBytes(file))



Это ж просто жесть какая-то...

НахлобучДаже если закрыть глаза на твое изменение условий на лету
Какие такие изменения на лету? Ты о той дурке, которую сам включил?

Нахлобучто опять же -- у тебя останется куча незакрытых потоков и таки архив целиком в памяти. Опять незадача вышла. Что делать будешь? Снова на ходу код править?
Кто-то мешает их диспоузить? Ты хотел работы с потоками - держи:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var memory1 = new ZipMemory("1.xlsx", File.OpenRead("1.xlsx"));
var memory2 = new ZipMemory("2.xlsx", File.OpenRead("2.xlsx"));

using (memory1.Body)
using (memory2.Body)
using (var outputMemory = ZipArray.Create(memory1, memory2))
using (var stream = File.Create("archive.zip"))
{
    outputMemory.CopyTo(stream);
}



На входе потоки - на выходе поток. Как ты будешь их освобождать - это твои проблемы. Не хочешь заморачиваться с освобождением ресурсов - кури массив байтов, просто и вкусно. Хочешь более тонкого подхода с потоками - бери стримы, только за memory leak теперь сам следи.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303812
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно ты постоянно увертываешься от ответа и перескакиваешь с темы на тему. Начал с невразумительного пассажа ( 14452965 ) о "мой велосипед работает только с потоками (через байтовый массив, без файлового оверхеда)." и все заверте...

cooldeveloper2НахлобучЧего-чего? Что значит "Реализация SqlFileStream не поддерживает использование FileStream = File.OpenRead напрямую"?
Только промежуточное копирование FileStream в SqlFileStream.Не многим лучше. Приведи мысли в порядок и напиши нормальным языком, что ты тут имел в виду.

cooldeveloper2Я ж тебе уже писал, тогда не влазь в этот разговор с "другим о EF. Там речь шла о блобах и респонзе, ты взял и вырвал респонз из контекста и прикрутил ко второй теме про FILESTREAM. Пришлось тебе примеры показывать и для FILESTREAM. Сам всех запутал, а виноваты я и "другой".Покажи мне место, где я влез в твой разговор с "другими о EF".

cooldeveloper2Тем не менее, давай поговорим об ORM. Не сцать.С другими об этом говори. И истерик не разводи, держи себя в руках, будь добр.

cooldeveloper2Ты про EF не упоминал, но вырвал из его контекста спич про респонз. Как понимать?Дай ссылку на сообщения, где, что и откуда я вырвал.

cooldeveloper2Ты ж мой хороший, неужели ты не понял с ходу, когда я про File.OpenRead написал?О чем еще я тут должен догадаться? Ты дал пример кода, в котором был MemoryStream, а потом на ходу -- "ой, а ты не догадался?" -- переиграл все в Stream и снова в белом. Здорово, чоужтам.

cooldeveloper2Особенно когда ты жег напалном про:

Код: c#
1.
new ZipMemory(file, new MemoryStream(File.ReadAllBytes(file))



Это ж просто жесть какая-то...
Все в строгом соответствии с твоей реализацией ZipMemory ( 14453716 ), которую ты с таким апломбом предоставил, и его public MemoryStream Body { get; set; }.

cooldeveloper2НахлобучДаже если закрыть глаза на твое изменение условий на лету
Какие такие изменения на лету? Ты о той дурке, которую сам включил?А ты клёвый. 14455264 -- вот ровно тут ты сменил MemoryStream на Stream. Или не сменил?

cooldeveloper2Кто-то мешает их диспоузить? Ты хотел работы с потоками - держи:О using(memory1.Body) я тоже должен был догадаться? Ты изрыгаешь какие-то невразумительные куски кода, я тебе указываю на проблемные места и ты лихо прикрываешься "нучожтынедогадался". Хороший подход.

Но я отвлекся.

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

* Как быть с большими файлами тут: 14453329 ?
* Где будет сформирован архив вот тут: 14453644 ?
* Реализация Copy отсюда ( 14454271 ) -- потоковая операция?

И в качестве факультатива -- оченно хотелось бы посмотреть на два метода, которые ты упомянул тут ( 14453664 ; " Если нужна адаптация под потоковый ввод вывод, класс дополняется еще двумя методами" ). Большие у меня сомнения, что ты понимаешь, как работать с потоками.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303901
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
винрар и перенаправление консольных потоков =)
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303930
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвинрар и перенаправление консольных потоков =)
издеваешься?
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303987
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

почему же? винрар лучше абсолютно при любых раскладах.
с любой точки и любого аспекта зрения. я имею в виду для
сжатия, а не для распаковки zip

можно 7зип, но винрар ощутимо быстрее.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38303994
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

вопрос не в качестве 7зип и винрар, а в осмысленности использования под IIS внешних процессов
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304009
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

не вижу проблемы.
кроме той, что на серваке может не быть никакого винрара :)
ну и лицензии, опять же, может не быть.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304241
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, Нахлобуч, продолжаю тебя вразумлять. Приготовься, а то ты какой-то расхлябанный, что ли.

НахлобучЗабавно ты постоянно увертываешься от ответа и перескакиваешь с темы на тему. Начал с невразумительного пассажа ( 14452965 ) о "мой велосипед работает только с потоками (через байтовый массив, без файлового оверхеда)." и все заверте...
1. Я увертываюсь от ответа? Ты спятил, я четко отвечаю на твои разрозненные вопросы. То сначала ты искаверкал вопрос по поводу свойства OutputStream, то начал писать про какие-то методы. Соберись и задай вопрос по существу, а то виляешь по сторонам, а толку никакого.
2. По поводу пассажа. Не вижу никаких противоречий, ибо мой лисапед работает только с потоками (реализация), а через байтовый массив (без файлового оверхеда) он предоставляет вход и выход. Ситуация выглядит печально, что тебе об этом еще и нужно писать, т.к. предоставленный код говорит сам за себя.
3. Признайся, ты начал свой вброс вот этим безумным постом 14452467 про File.ReadAllBytes, не разобравшись в ситуации. Все прекрасно понимают, что File.ReadAllBytes тут вообще ни у кассы, ибо это просто демо пример для инициализации входа массивом байт. Не более того. Потом ты понял, что сел в лужу, и ляпнул вот это 14452881 мол "всё прогрессивное человечество использует потоковый ввод-вывод". Что за бред?
4. Человечество идет по легкому пути и использует байтовые массивы, т.к. это удобно и не требует высвобождения памяти. Для более редких случаев, когда требуется читать поток по кускам, возможно применение и стримов.

НахлобучНе многим лучше. Приведи мысли в порядок и напиши нормальным языком, что ты тут имел в виду.
Насколько я понимаю ситуацию, как раз с мыслями не порядок у тебя, а не у меня. Я тебе уже 10 раз написал, что я имею ввиду. Пора выйти из сумрака, мне надоело тебе разжевывать очевидные вещи.

Нахлобучcooldeveloper2Я ж тебе уже писал, тогда не влазь в этот разговор с "другим о EF. Там речь шла о блобах и респонзе, ты взял и вырвал респонз из контекста и прикрутил ко второй теме про FILESTREAM. Пришлось тебе примеры показывать и для FILESTREAM. Сам всех запутал, а виноваты я и "другой".Покажи мне место, где я влез в твой разговор с "другими о EF".
1. Вот тут 14453404 я написал про честный массив байтов при работе с БД.
2. И тут же уточнил про EF 14453594 + написал, что для 99.9% задач (особенно для EF и L2S) требуется обязательно помещать такой объект в массив.
3. А вот тут 14453595 ты процитировал моё сообщение про БД. И дальше перевернул всё с ног на голову.
4. Подчеркиваю, эта тема касается блобов и маппинга на свои классы (в т.ч. через ORM). О FILESTREAM тут речи не идет.

Нахлобучcooldeveloper2Тем не менее, давай поговорим об ORM. Не сцать.С другими об этом говори. И истерик не разводи, держи себя в руках, будь добр.
Я в руках, держусь и здравствую. Таки ответ будет или сдулся?

Нахлобучcooldeveloper2Ты про EF не упоминал, но вырвал из его контекста спич про респонз. Как понимать?Дай ссылку на сообщения, где, что и откуда я вырвал.
Выше.

Нахлобучcooldeveloper2Ты ж мой хороший, неужели ты не понял с ходу, когда я про File.OpenRead написал?О чем еще я тут должен догадаться? Ты дал пример кода, в котором был MemoryStream, а потом на ходу -- "ой, а ты не догадался?" -- переиграл все в Stream и снова в белом. Здорово, чоужтам.
Ты должен был догадаться о следующем (и догадался, просто в силу своей упертости не желаешь признавать своего просада):
1. Ты в своем гавнокоде сначала считываешь всё в память, а потом массив байт оборачиваешь в стрим
2. Я в свое коде показываю, что не нужно ничего предварительно загружать в память, нужно сразу инициализировать стрим с дескриптором на файл
3. Ты прикидываешься бревном и начинаешь вещать о несправедливости мира и о том, что FileStream не коррелирует с MemoryStream
4. Я тебе пишу про непринципиальность сего и изменяю в ZipMemory свойство Body на универсальный тип Stream, чтоб успокоить твоё негодование
5. Ты прикидываешься бревном и опять начинаешь грузить меня своими вбросами о косячности кастинга FileStream и MemoryStream
6. Доколе это будет продолжаться? Зри рационально в зерно, а не ковыряйся в шелухе.

НахлобучА ты клёвый. 14455264 -- вот ровно тут ты сменил MemoryStream на Stream. Или не сменил?
Выше я тебе подробно ответил на эту тему. Можешь продолжать дальше включать дурака, тебе идёт.

Нахлобучcooldeveloper2Кто-то мешает их диспоузить? Ты хотел работы с потоками - держи:О using(memory1.Body) я тоже должен был догадаться? Ты изрыгаешь какие-то невразумительные куски кода, я тебе указываю на проблемные места и ты лихо прикрываешься "нучожтынедогадался". Хороший подход.
А ты забавен. Сначала верещишь о том, что дайте мне стримы. А теперь, оказывается, ты не догадываешься, что их диспоузить надо? Аплодисменты. Я вообще не должен в реализации со стримами заботиться о том, что и как ты там собираешься диспоузить - я тебе прокидываю стримы, ты с ними работаешь.

НахлобучНо я отвлекся.
Как обычно. Ничего удивительного.

НахлобучОтветь, пожалуйста, на следующие вопросы, не увиливай. И отвечай не фонтаном бессвязных слов, а так, чтобы тебя можно было однозначно понять.
Вообще-то, я то и дело отвечаю на твои невразумительные вопросы и не увиливаю. Однозначно и безповоротно.

Нахлобуч* Как быть с большими файлами тут: 14453329 ?
* Где будет сформирован архив вот тут: 14453644 ?
* Реализация Copy отсюда ( 14454271 ) -- потоковая операция?
1. Ответил тут 14453562
2. В MemoryStream, это очевидно даже из сигнатуры метода.
3. Ты повторяешься. Ответил тут 14454749 . На что ты ответил тут 14455016 "Отлично. Запомним это"

Нахлобуч, у тебя проблемы с памятью?

НахлобучИ в качестве факультатива -- оченно хотелось бы посмотреть на два метода, которые ты упомянул тут ( 14453664 ; " Если нужна адаптация под потоковый ввод вывод, класс дополняется еще двумя методами" ). Большие у меня сомнения, что ты понимаешь, как работать с потоками.
Не вопрос, вот первый (главный). Второй по аналогии тебе на домашнее задание. Если осилишь, конечно. Т.к. с таким багажом "знаний" тебе придется не легко...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public static MemoryStream Create(params ZipMemory[] data)
{
    var stream = new MemoryStream();
    var package = ZipPackage.Open(stream, FileMode.Create);
    foreach (var file in data)
    {
        Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(file.FileName, UriKind.Relative));
        PackagePart packagePartDocument = package.CreatePart(partUriDocument, string.Empty);

        file.Body.CopyTo(packagePartDocument.GetStream());
    }
    package.Close();

    stream.Position = 0;

    return stream;
}
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304331
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttИзопропил,

не вижу проблемы.
кроме той, что на серваке может не быть никакого винрара :)
ну и лицензии, опять же, может не быть.
Тебе всё правильно говорят, винрар на сервере - плохая практика, это тебе любой сисадмин скажет. Но самое большое зло - это в веб приложении запускать дополнительные процессы. Особенно, если дело касается высоконагруженных серверов приложений. Правильным выходом будет работа с архивом в памяти и только в памяти (массив байт или стрим). Это прописные истыины, о которых даже говорить как-то стыдно.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304347
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShSergecooldeveloper2пропущено...
А рар - это не винрар? :)
Это бесплатная штука, которая работает из-под коммандной строки.
Это таки винрар. И бесплатная эта штука только для создания архива. Вот тут рецептик валяется: http://codearticles.ru/articles/1106
Но самое зло такого подхода заключается в дополнительном процессе на реквест (для серверных приложений). Жирновато будет. За такие действия на сервере принято расстреливать.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304723
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз уж ты начал про говнокод и скатился к оскорблениям, то я вправе ответить тем же.

cooldeveloper21. Я увертываюсь от ответа? Ты спятил, я четко отвечаю на твои разрозненные вопросы. То сначала ты искаверкал вопрос по поводу свойства OutputStream, то начал писать про какие-то методы. Соберись и задай вопрос по существу, а то виляешь по сторонам, а толку никакогоВ то время, как я пытаюсь поговорить с тобой только про потоковый ввод-вывод, ты уже успел помянуть про БД, FILESTREAM, SqlFileStream, блобы, респонзы клиентов, аплоад файлов и снятие данных с устройств. И не притворяйся, что ты не понимаешь, что это уход от ответа и подмена предмета. Я всеми силами пытаюсь вернуть тебя к первоначальной теме дискуссии, но ты изо всех сил увиливаешь.

Внимание, вопрос по существу: ты осознаешь, что весь код, который ты тут привел -- говно и что либо при любых значительных объемах данных он будет валить систему по OutOfMemoryException либо будет протекать (leak) изо всех сил?

cooldeveloper22. По поводу пассажа. Не вижу никаких противоречий, ибо мой лисапед работает только с потоками (реализация), а через байтовый массив (без файлового оверхеда) он предоставляет вход и выход. Ситуация выглядит печально, что тебе об этом еще и нужно писать, т.к. предоставленный код говорит сам за себя.Во-первых, когда слышишь от инженера (я надеюсь, ты себя таковым считаешь) словосочетание "файловый оверхед" -- это многое говорит о его квалификации.

Во-вторых, твой "рецепт" внутри использует потоки просто потому, что разработчки из Microsoft далеко не дураки и в публичном API предоставили только возможность записи и чтения в поток ( PackagePart.GetStream ).

cooldeveloper23. Признайся, ты начал свой вброс вот этим безумным постом 14452467 про File.ReadAllBytes, не разобравшись в ситуации. Все прекрасно понимают, что File.ReadAllBytes тут вообще ни у кассы, ибо это просто демо пример для инициализации входа массивом байт.Прекрасно, еще одно место, где я должен был о чем-то догадаться.

Тогда так: как же ты сам не понял, что это был не вброс, а просто иллюстрация ущербности твоего подхода загрузки всех архивируемых данных в память? Это же всем видно, непонятно, как же ты не догадался.

cooldeveloper2Не более того. Потом ты понял, что сел в лужу, и ляпнул вот это 14452881 мол "всё прогрессивное человечество использует потоковый ввод-вывод". Что за бред?Смотри комментарий про "твой код -- говно".

cooldeveloper24. Человечество идет по легкому пути и использует байтовые массивы, т.к. это удобно и не требует высвобождения памяти. Для более редких случаев, когда требуется читать поток по кускам, возможно применение и стримов.Смотри комментарий про "твой код -- говно". Ты решаешь неимоверно узкую задачу и с жуткой упертостью отстаиваешь неверную позицию, что это -- зе бест.

cooldeveloper21. Вот тут 14453404 я написал про честный массив байтов при работе с БД.
2. И тут же уточнил про EF 14453594 + написал, что для 99.9% задач (особенно для EF и L2S) требуется обязательно помещать такой объект в массив.
3. А вот тут 14453595 ты процитировал моё сообщение про БД. И дальше перевернул всё с ног на голову.Уй ты лапочка, ну почитай сам уже. Вот тут 14453404 ты говоришь со мной, вот тут 14453594 -- с Изопропилом. Повторяю в последний раз -- я про EF в частности и про ORM в целом с тобой не говорил и не собираюсь.

cooldeveloper2Ты должен был догадаться о следующем (и догадался, просто в силу своей упертости не желаешь признавать своего просада):
1. Ты в своем гавнокоде сначала считываешь всё в память, а потом массив байт оборачиваешь в стримГовно -- это твой код, милчеловек. Я же в своем коде основывался на том определении класса ZipMemory, что ты предоставил. Не надо теперь хлопать глазками как девочка и рассказывать, что ты совсем не то имел в виду.

cooldeveloper22. Я в свое коде показываю, что не нужно ничего предварительно загружать в память, нужно сразу инициализировать стрим с дескриптором на файлУже устал говорить. Дискуссия (срач, точнее) с тобой напоминает игру в шахматы с голубем.

cooldeveloper24. Я тебе пишу про непринципиальность сего и изменяю в ZipMemory свойство Body на универсальный тип Stream, чтоб успокоить твоё негодованиеХорошая непринципиальность, что уж.

cooldeveloper25. Ты прикидываешься бревном и опять начинаешь грузить меня своими вбросами о косячности кастинга FileStream и MemoryStreamЧто такое "кастинг FileStream и MemoryStream"? Ты инженер или нет? Выражайся технически правильными терминами.

cooldeveloper2А ты забавен. Сначала верещишь о том, что дайте мне стримы. А теперь, оказывается, ты не догадываешься, что их диспоузить надо? Аплодисменты.Сядь, остынь, подумай. Адекватный программист мог хотя бы реализовать в ZipMemory интерфейс IDisposable. Ты же не сделал и этого и снова прикрываешься "догадалками". Взялся писать код -- пиши нормально, а не в своем стиле.

cooldeveloper2Я вообще не должен в реализации со стримами заботиться о том, что и как ты там собираешься диспоузить - я тебе прокидываю стримы, ты с ними работаешь.Снова какая-то фраза от грузчика, а не от программиста.

cooldeveloper2Нахлобуч* Как быть с большими файлами тут:
* Где будет сформирован архив вот тут: 14453644 ? 14453329 ?1. Ответил тут 14453562
2. В MemoryStream, это очевидно даже из сигнатуры метода.
Ты осознаешь, что у тебя весь архив будет лежать в буфере в памяти?

cooldeveloper2Не вопрос, вот первый (главный). Второй по аналогии тебе на домашнее задание. Если осилишь, конечно. Т.к. с таким багажом "знаний" тебе придется не легко...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public static MemoryStream Create(params ZipMemory[] data)
{
    var stream = new MemoryStream();
    var package = ZipPackage.Open(stream, FileMode.Create);
    foreach (var file in data)
    {
        Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(file.FileName, UriKind.Relative));
        PackagePart packagePartDocument = package.CreatePart(partUriDocument, string.Empty);

        file.Body.CopyTo(packagePartDocument.GetStream());
    }
    package.Close();

    stream.Position = 0;

    return stream;
}

Ай, опять ты сел в лужу, пупсик -- опять ресурсы текут, опять все в памяти держишь... Ну да ничего, тебе не впервой. А казалось бы большой мальчик уже. На, мотай на памперс:
Код: 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.
public class ZipMemory
{
    public string FileName { get; private set; }
    public Func<Stream> StreamProvider { get; private set; }

    public ZipMemory(string fileName, Func<Stream> streamProvider)
    {
        FileName = fileName;
        StreamProvider = streamProvider;
    }   
}

public static MemoryStream Create(Stream outputStream, IEnumerable<ZipMemory> files)
{    
    using(var package = ZipPackage.Open(outputStream, FileMode.Create))
    {
        foreach(var file in files)
        {
            var partUriDocument = PackUriHelper.CreatePartUri(new Uri(inputFile.FileName, UriKind.Relative));
            var packagePartDocument = package.CreatePart(partUriDocument, string.Empty);

            using(var stream = file.StreamProvider.Invoke())
                stream.CopyTo(packagePartDocument.GetStream());
        }
    }
}

var files = new List<ZipMemory>();
foreach(var file in Directory.GetFiles(@"c:\windows\system32", "*.*"))
{
    var fullPath = file;
    files.Add(new ZipMemory(fullPath, () => File.OpenRead(fullPath)));
}

using(var zipStream = File.Create("c:\system32.zip"))
    Create(zipStream, files);
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304801
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2Тебе всё правильно говорят, винрар на сервере - плохая практика, это тебе любой сисадмин скажет. Но самое большое зло - это в веб приложении запускать дополнительные процессы. Особенно, если дело касается высоконагруженных серверов приложений. Правильным выходом будет работа с архивом в памяти и только в памяти (массив байт или стрим). Это прописные истыины, о которых даже говорить как-то стыдно.

Я посмотрю, как ты в памяти со своим стримом обеспечишь следующие штуковины:

инкрементальное (+версионное) обновление архива

контроль целостности

непрерывное сжатие групп файлов

высочайший уровень сжатия текстовых данных

электронная цифровая подпись

информация для восстановления

разбитие на тома

... да и многое другое

консольный винрар на столько мощнейшая штука, познать всю мощь которую это целое дао

а то, что ты там не умеешь запущенными процессами в памяти рулить, запускать их в одтельном потоке, скармливать данные, управлять степенью загрузки вычислистельных ресурсов, это только твои личные проблемы

если уж зарекся что-то называть «плохой практикой» будь добр изложить конкретные критичные/нерешаемые проблемы, иначе смысл этого высказывания — лишь пыль, которую пускаешь людям в глаза
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304826
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпознать всю мощь которую это целое дао
в анналы занести
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304840
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

:)
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304897
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НахлобучРаз уж ты начал про говнокод и скатился к оскорблениям, то я вправе ответить тем же.
Ух какие мы опасные. Ну что ж, вперёд и с песней.

НахлобучВ то время, как я пытаюсь поговорить с тобой только про потоковый ввод-вывод, ты уже успел помянуть про БД, FILESTREAM, SqlFileStream, блобы, респонзы клиентов, аплоад файлов и снятие данных с устройств. И не притворяйся, что ты не понимаешь, что это уход от ответа и подмена предмета. Я всеми силами пытаюсь вернуть тебя к первоначальной теме дискуссии, но ты изо всех сил увиливаешь.
Ты не поверишь, все ужасы, что ты тут с таким напором наперечислял, у меня уместились в одном маленьком посте: 14454086 . Какая тут может быть подмена? Я всеми силами пытаюсь объяснить, что тебя заносит на ровном месте куда-то в обочину. Но ты продолжает писать какую-то жуть. Занятно.

НахлобучВнимание, вопрос по существу: ты осознаешь, что весь код, который ты тут привел -- говно и что либо при любых значительных объемах данных он будет валить систему по OutOfMemoryException либо будет протекать (leak) изо всех сил?
Внимание, ответ по существу.
1. Я не осознаю, что "весь код, который я тут привел -- говно и что либо при любых значительных объемах данных он будет валить систему по OutOfMemoryException либо будет протекать (leak) изо всех сил" .
2. Зато я осознаю, что весь мой код - корректный, отлаженный и стабильный. Замечательно ведет себя на больших нагрузках сервера приложения. Честно создает архивы и их распаковывает. Никакик учетек памяти в нём не было и нет.
3. Так же я осознаю, что твой код, который ты тут писал с обворачиванием прочитанных байт в стрим - безумное студенческое гавно, которое только видывал свет.
4. Так же я осознаю, что первый твой пост с File.ReadAllBytes - бред сивой кобылы. Очень сивой.
5. Такой ответ тебя устроит?

НахлобучВо-первых, когда слышишь от инженера (я надеюсь, ты себя таковым считаешь) словосочетание "файловый оверхед" -- это многое говорит о его квалификации.
Ты просто в очередной раз демонстрируешь своё незнание предметики. "Инженер". Ну это простительно для вчерашних студентов, которые только только выпустились из ВУЗа.
http://en.wikipedia.org/wiki/Overhead Overhead (business), the ongoing operating costs of running a business
Engineering overhead, ancillary design features required by a component of a device
Overhead (computing), ancillary computation required by an algorithm or program
Overhead information, for telecommunication systems
File system overhead, storage or other consideration required by a file system that is not directly related to data.
Any physical object situated, or action occurring above:
Overhead wire, for power transmission
Overhead cable, for signal transmission
Overhead projector, a display system
Overhead cam, a mechanical device
Overhead join, in air traffic control
Overhead (band), a Finnish progressive rock band


НахлобучВо-вторых, твой "рецепт" внутри использует потоки просто потому, что разработчки из Microsoft далеко не дураки и в публичном API предоставили только возможность записи и чтения в поток ( PackagePart.GetStream ).
1. В моём "рецепте" используетя этот метод . К чему твой вброс? Лишь бы что-то пукнуть? Понятно.
2. Для тех, кто забарикадировался в танке, я повторяю: если нужен стрим - используй его (доработать класс), если нужен байтовый массив - используй его (реализация сделана).
3. Но говорить, что весь современный мир использует потоковый ввод вывод - это глупо, безапеляционно и феерично. Только полный идиот может заявлять такое. Согласен?

Нахлобучcooldeveloper23. Признайся, ты начал свой вброс вот этим безумным постом 14452467 про File.ReadAllBytes, не разобравшись в ситуации. Все прекрасно понимают, что File.ReadAllBytes тут вообще ни у кассы, ибо это просто демо пример для инициализации входа массивом байт.Прекрасно, еще одно место, где я должен был о чем-то догадаться.
Ты разучился читать код? Или ты обычно смотришь на первую строчку примера, а потом начинаешь воображать себе реализацию?
Нормальные люди бы прочитали код, осознали его суть и логику и уж потом бы начали комментировать. Но это не твой случай. Ты тупо выдернул из контекста первую строчку File.ReadAllBytes и вбросил какой-то ляп. После того, как я тебе объяснил, что ты сморозил глупость, ты не нашел ничего лучше, как отжечь ещё более каверзный вброс: "Все прогрессивное человечество использует потоковый ввод-вывод"
Это пять!

НахлобучТогда так: как же ты сам не понял, что это был не вброс, а просто иллюстрация ущербности твоего подхода загрузки всех архивируемых данных в память? Это же всем видно, непонятно, как же ты не догадался.
Ты долго будешь дурака включать? Я тебе уже раз 10 объяснил, что в 99.9% случаев нужно именно полностью загружать объект в память - чтение / запись в БД, как вариант. Тему насчет EF продолжать, по которой ты тихло слился в сторонку?

Нахлобучcooldeveloper2Не более того. Потом ты понял, что сел в лужу, и ляпнул вот это 14452881 мол "всё прогрессивное человечество использует потоковый ввод-вывод". Что за бред?Смотри комментарий про "твой код -- говно".
Смотри комментарий про "твой код гавно", "первый комментарий гавно", "ВУЗ твой гавно". Вроде всё четко описал, у тебя не должно возникнуть проблем при чтении.

Нахлобучcooldeveloper24. Человечество идет по легкому пути и использует байтовые массивы, т.к. это удобно и не требует высвобождения памяти. Для более редких случаев, когда требуется читать поток по кускам, возможно применение и стримов.Смотри комментарий про "твой код -- говно". Ты решаешь неимоверно узкую задачу и с жуткой упертостью отстаиваешь неверную позицию, что это -- зе бест.
1. Смотри комментарии про твой код, твой ВУЗ и тебя.
2. С каких это пор работа с байтовыми массивами - "неимоверно" узкая задача? Что за бред ты несешь?
3. Как-раз таки работа с потоками и чанками данных - это "неимоверно" узкая задача. Все нормальные люди пишут и читают объекты в массив байт и живут припеваючи.

НахлобучУй ты лапочка, ну почитай сам уже. Вот тут 14453404 ты говоришь со мной, вот тут 14453594 -- с Изопропилом.
Изопропил точно так же, как ты, учавствует в дискуссии. Ты предлагаешь мне дублировать посты персонально под тебя?

НахлобучПовторяю в последний раз -- я про EF в частности и про ORM в целом с тобой не говорил и не собираюсь.
EF и ORM - это уточнение и, собственно, следствие от первого высказывания про БД и блобы. В любом случае ни в первом ни во втором случая про FILESTREAM не было и речи. Согласен?

Нахлобучcooldeveloper2Ты должен был догадаться о следующем (и догадался, просто в силу своей упертости не желаешь признавать своего просада):
1. Ты в своем гавнокоде сначала считываешь всё в память, а потом массив байт оборачиваешь в стримГовно -- это твой код, милчеловек. Я же в своем коде основывался на том определении класса ZipMemory, что ты предоставил. Не надо теперь хлопать глазками как девочка и рассказывать, что ты совсем не то имел в виду.
1. Говно - это твой иснтитут, который выпускает таких неучей на улицу.
2. Смысл предоставления ZipMemory был в том, чтобы показать, что в его теле фигурирует не массив байт, а поток . Это был ответ на твой гавнокод: 14454334
3. Ты же как мартышка уцепился за несоответствие типов MemoryStream и FileStream и начал верещать как удавленный.
4. Ох и ах. Какой ужас, перепутали типы стримов. Даже если и так, то так или иначе там и не пахло полной загрузкой файлов в память, о которой ты орал во всю глотку.

Нахлобучcooldeveloper22. Я в свое коде показываю, что не нужно ничего предварительно загружать в память, нужно сразу инициализировать стрим с дескриптором на файлУже устал говорить. Дискуссия (срач, точнее) с тобой напоминает игру в шахматы с голубем.
Дискуссия (срач, точнее) с тобой напоминает пинание поросёнка в луже. Отгадай, кто в роли поросенка? Правильно, роли поросенка Нахлобуч.

Нахлобучcooldeveloper24. Я тебе пишу про непринципиальность сего и изменяю в ZipMemory свойство Body на универсальный тип Stream, чтоб успокоить твоё негодованиеХорошая непринципиальность, что уж.
Которая так или иначе показывает, что никакой загрузки файлов в память не будет. В чем ты облажался.

Нахлобучcooldeveloper25. Ты прикидываешься бревном и опять начинаешь грузить меня своими вбросами о косячности кастинга FileStream и MemoryStreamЧто такое "кастинг FileStream и MemoryStream"? Ты инженер или нет? Выражайся технически правильными терминами.
Да, я уже узнал о том, какой ты "инженер". Если для тебя понятие файлового оверхеда в диковинку, что слово "кастинг" вообще расщепит твой сознание. Это слишком сложные термины, не думай о них. Сосредоточься на ответах.

НахлобучСядь, остынь, подумай. Адекватный программист мог хотя бы реализовать в ZipMemory интерфейс IDisposable. Ты же не сделал и этого и снова прикрываешься "догадалками". Взялся писать код -- пиши нормально, а не в своем стиле.
Сижу, остывший, в раздумьях. Адекватному программисту не нужна реализация IDisposable в ZipMemory, т.к. с таким же успехом он может диспоузить Body. Для любителей запаковать логику в единый флакон - я не против, пакуй. Главное, не воняй и не пиши глупости про весь современный мир.

Нахлобучcooldeveloper2Я вообще не должен в реализации со стримами заботиться о том, что и как ты там собираешься диспоузить - я тебе прокидываю стримы, ты с ними работаешь.Снова какая-то фраза от грузчика, а не от программиста.
Если у тебя сложности с пониманием элементарных вещей, могу посоветовать сад.

Нахлобучcooldeveloper21. Ответил тут 14453562
2. В MemoryStream, это очевидно даже из сигнатуры метода.
Ты осознаешь, что у тебя весь архив будет лежать в буфере в памяти?
Садись, двойка. У любого MemoryStream есть резервное хранилище (память). Не знал? Но в отличие от массива байтов - в массиве байтов нельзя добавить и сократить поток. Читай буквари, а не отжигай на форумах.

НахлобучАй, опять ты сел в лужу, пупсик -- опять ресурсы текут, опять все в памяти держишь...
1. Ты читаешь каким местом? Я тебе уже раз 10 повторил, что за диспоуз стримом сам отвечай. Не внял?
2. Что я держу в памяти? Я принимаю дескрипторы, на выхлопе четсно собранный MemoryStream. Акстись?

НахлобучНу да ничего, тебе не впервой. А казалось бы большой мальчик уже. На, мотай на памперс
1. Ты уверен, что твой гавнокод рабочий? Авторитетно заявляю, он нерабочий. Более того, он даже не компилится.
2. Ты считаешь, что введение Func<Stream> нереально улучшит ситуацию? Сходи детвору посмеши в садике.
3. Как же так - адекватный программист мог хотя бы реализовать в ZipMemory интерфейс IDisposable. Где?
4. По сути - убогий код, передранный с моего и немного измененный под своё больное воображение.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304903
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttcooldeveloper2Тебе всё правильно говорят, винрар на сервере - плохая практика, это тебе любой сисадмин скажет. Но самое большое зло - это в веб приложении запускать дополнительные процессы. Особенно, если дело касается высоконагруженных серверов приложений. Правильным выходом будет работа с архивом в памяти и только в памяти (массив байт или стрим). Это прописные истыины, о которых даже говорить как-то стыдно.

Я посмотрю, как ты в памяти со своим стримом обеспечишь следующие штуковины:

инкрементальное (+версионное) обновление архива

контроль целостности

непрерывное сжатие групп файлов

высочайший уровень сжатия текстовых данных

электронная цифровая подпись

информация для восстановления

разбитие на тома

... да и многое другое

консольный винрар на столько мощнейшая штука, познать всю мощь которую это целое дао

а то, что ты там не умеешь запущенными процессами в памяти рулить, запускать их в одтельном потоке, скармливать данные, управлять степенью загрузки вычислистельных ресурсов, это только твои личные проблемы

если уж зарекся что-то называть «плохой практикой» будь добр изложить конкретные критичные/нерешаемые проблемы, иначе смысл этого высказывания — лишь пыль, которую пускаешь людям в глаза


Мне эти штуковины не нужны. Нужно просто сжать n файлов в архив. Всё.
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304906
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper2,

:) да знаю, что не нужны...
...
Рейтинг: 0 / 0
Заархивировать файлы
    #38304911
cooldeveloper2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Ты уверен, что твой гавнокод рабочий? Авторитетно заявляю, он нерабочий. Более того, он даже не компилится.
2. Ты считаешь, что введение Func<Stream> нереально улучшит ситуацию? Сходи детвору посмеши в садике.
3. Как же так - адекватный программист мог хотя бы реализовать в ZipMemory интерфейс IDisposable. Где?
4. По сути - убогий код, передранный с моего и немного измененный под своё больное воображение.
5. С какой такой стати ты принудительно диспоузишь входные потоки, кто дал такое право?
6. Твой код уровня помойки. Рассмешил.
...
Рейтинг: 0 / 0
107 сообщений из 107, показаны все 5 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Заархивировать файлы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]