Я хочу сжать некоторые очень большие файлы GML
(1-10GB). Я написал для этого метод, но он не работает. Если я распакую его, используя 7-zip для Windows (или что-то еще), я получаю файл, который выглядит плохо в конце (он еще не закончен, XML просто не закончен) ... Я не вижу, что делаю неправильно ...GZipStream с большими файлами не работает
private void CompressFile()
{
string outputPath = Path.Combine(Path.ChangeExtension(_gmlPath, ".gz"));
var buffer = new byte[1024 * 64];
using (var compressing = new GZipStream(File.OpenWrite(outputPath), CompressionMode.Compress))
{
using (var file = File.OpenRead(_gmlPath))
{
var bytesRead = file.Read(buffer, 0, buffer.Length);
while (bytesRead != 0)
{
compressing.Write(buffer, 0, buffer.Length);
bytesRead = file.Read(buffer, 0, buffer.Length);
}
}
}
}
[править]
Дополнительный вопрос: Как я могу указать/изменить имя файла, то сжимается внутри GZ
? Это имя такое же, как осуществляется ввод, но нет .gml
продление: S (есть на входе) ...
в отношении дополнительного вопроса: Если вы измените свой код на 'строку OutputPath = _gmlPath +«.gz»', то вы получите „foo.gml.gz“ вместо «foo.gz», если вход «foo.gml». – dtb
О, это работает :))) Большое вам спасибо! – Nickon