Нигде не могу найти правильного подхода:
Есть FileStream для чтения произвольного файла (формат не важен).Он читает из файла блоки некоторого размера.
string fileIn = "C:/data.000";
string fileOut = "C:/data.rar.gz";
byte[] buffer = new byte[10240000];
using (FileStream fstream = File.OpenRead(fileIn))
{
while(fstream.Position < fstream.Length)
{
fstream.Read(buffer, 0, buffer.Length);
}
}
typeOf показывает что "fstream.Read(buffer,0,buffer.Length) возвращает System.int32 и равен 10240000, т.е. то значение, которое я задал в качестве размера буфера.
Каким образом получить объект типа(кусок файла), а не размер буфера?
UPD^^ пробую сделать вот так:
private void Compress(string fileInput, string FileOut, Program.StopTrigger abortCheck)
{
using (Stream fs = new FileStream(fileInput,FileMode.Open,FileAccess.Read,FileShare.Read,10240000,true))
using (Stream fd = new FileStream(FileOut,FileMode.OpenOrCreate,FileAccess.Write,FileShare.Write,10240000,true))
{
long dataPortionSize = fs.Length / 64;
byte[] buffer = new byte[dataPortionSize];
int nRead;
for(int i =1; i == 64; i++)
{
Thread th = new Thread(() =>
{
fs.Position = dataPortionSize*i-dataPortionSize;
using (GZipStream csStream = new GZipStream(fd, CompressionMode.Compress))
{
while ((nRead = fs.Read(buffer, 0, buffer.Length)) > 0)
{
csStream.Write(buffer, 0, nRead);
}
}
});
th.Start();
}
}
}
Файл делится, считывается очень быстро, но никакого сжатия не происходит, записывать соответственно нечего.
Подскажите кто сталкивался с этим
Данные, считанные из файла, находятся в buffer
по расположению от 0 (второй аргумент вызова fstream.Read
до 0 + k
, где k
— число, возвращаемое вызовом fstream.Read
(вы его не присваиваете никакой переменной, и оно тем самым теряется).
Обратите внимание, что вы при этом получаете просто набор байт. Интерпретация его как объекта какого-либо типа лежит на вас (и обычно производится при с использованием методов десериализации).
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть допустим контроллер студентов и контроллер группУ них есть методы Get Get(id) Post Put Delete
В программе используется простенький UserControl (модальное окно), в котором редактируется коллекция цветовых меток
Есть сервер на С# и клиент на скриптеДанные от сервера отправляются хорошо, а вот с приемом разобраться не могу