Jak to przepisać na C#

0

Jestem świeży w C# i zbytnio nie wiem jak to zrobić, potrzebuję waszej pomocy.

Kod Java

ByteArrayOutputStream bos = new ByteArrayOutputStream();

     GZIPOutputStream gZIPOutputStream;

     try {

           gZIPOutputStream = new GZIPOutputStream(bos);

     gZIPOutputStream.write(Files.readAllBytes(Paths.get("eTW-1_SIGNED.xml")));

           gZIPOutputStream.finish();

     } catch (IOException e1) {

           // TODO Auto-generated catch block

           e1.printStackTrace();

     }

Pakowanie XML za pomocą GZIP, taki kod podał mi twórca API, On tym pakuje i jest prawidłowe.
Próbowałem na różne sposoby i dostaję "Nieprawidłowo skompresowana treść."

Jak to powinno się napisać w C#?

1

Pokaz co masz

0

@vpiotr: Teraz jestem poza domem więc mój kod po 12, ale używam GZipStream, podobno ma błąd który uniemożliwia odczytanie go w Javie.
https://gist.github.com/muhammad-naderi/ae58ba0564897c6126c59164269ed428 ostatni akapit.
Czy to prawda?

Kod którego używam

//kompresowanie xml
            byte[] raw = Encoding.UTF8.GetBytes(signedxmlDocument.InnerXml);
            byte[] CompressedsignedxmlDocument;
            using (var outputStream = new MemoryStream())
            {
                using (var gZipStream = new GZipStream(outputStream, CompressionMode.Compress))
                    gZipStream.Write(raw, 0, raw.Length);
                CompressedsignedxmlDocument = outputStream.ToArray();
                
            }
0

@karol75: Nie działa też

using (var compressedStream = new MemoryStream())
            {
                GZip.Compress(new MemoryStream(raw), compressedStream, false);
                CompressedsignedxmlDocument = compressedStream.ToArray();
            }

Nie działa

FileInfo fileToBeGZipped = new FileInfo(@"C://Users//konsu//Desktop//eTW//signed.xml");
            FileInfo gzipFileName = new FileInfo(string.Concat(fileToBeGZipped.FullName, ".gz"));

            using (FileStream fileToBeZippedAsStream = fileToBeGZipped.OpenRead())
            {
                using (FileStream gzipTargetAsStream = gzipFileName.Create())
                {
                    using (GZipStream gzipStream = new GZipStream(gzipTargetAsStream, CompressionMode.Compress))
                    {
                        try
                        {
                            fileToBeZippedAsStream.CopyTo(gzipStream);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }
            }
            CompressedsignedxmlDocument = File.ReadAllBytes(@"C://Users//konsu//Desktop//eTW//signed.xml.gz");
0
karol75 napisał(a):

@vpiotr: Teraz jestem poza domem więc mój kod po 12, ale używam GZipStream, podobno ma błąd który uniemożliwia odczytanie go w Javie.

https://gist.github.com/muhammad-naderi/ae58ba0564897c6126c59164269ed428 ostatni akapit.
Czy to prawda?

Kod którego używam

//kompresowanie xml
            byte[] raw = Encoding.UTF8.GetBytes(signedxmlDocument.InnerXml);
            byte[] CompressedsignedxmlDocument;
            using (var outputStream = new MemoryStream())
            {
                using (var gZipStream = new GZipStream(outputStream, CompressionMode.Compress))
                    gZipStream.Write(raw, 0, raw.Length);
                CompressedsignedxmlDocument = outputStream.ToArray();
                
            }

Tu Ci brakuje gZipStream.Flush
Zajrzyj tutaj: https://stackoverflow.com/a/25135871
Więcej nie pomogę bo nie znam C# :)

0

@vpiotr: Niestety to nie poprawiło sytuacji.
nadal
"Nieprawidłowo skompresowana treść."

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.