Avatar billede heinmain Nybegynder
09. marts 2010 - 10:38 Der er 5 kommentarer og
1 løsning

File extension forsvinder under komprimere?

File extension forsvinder under komprimere?

Hej.

Jeg er igang med at lave et lille program som skal komprimere en mappe/fil.

Jeg har fået det til at komprimere, men når jeg åbner zip filen viser den en fil uden file extension. Så skal selv skriv f.eks ".jpg" efter før den laver det om til et billede.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
using System.IO.Compression;

namespace GZip
{
    public partial class GZIP : Form
    {
        public GZIP()
        {
            InitializeComponent();
        }

        private void butStart_Click(object sender, EventArgs e)
        {
            AgumentHolder ObjAgumentHolder = new AgumentHolder();
            WorkerThread.DoWork += DoCompress_DoWork;

            ObjAgumentHolder.InputFile = txtFileIn.Text;
            ObjAgumentHolder.OutputFile = txtFileOut.Text;
            WorkerThread.RunWorkerAsync(ObjAgumentHolder);
        }

        private void DoCompress_DoWork(object sender, DoWorkEventArgs e)
        {
            AgumentHolder ObjAgumentHolder = e.Argument as AgumentHolder;

                FileStream FsOut = new FileStream(ObjAgumentHolder.OutputFile, FileMode.Create, FileAccess.Write, FileShare.None);
                GZipStream Gzip = new GZipStream(FsOut, CompressionMode.Compress, true);
                FileStream FsIn = new FileStream(ObjAgumentHolder.InputFile, FileMode.Open);

                byte[] Buffer = new byte[FsIn.Length];
                int count = FsIn.Read(Buffer, 0, Buffer.Length);
                FsIn.Close();
                FsIn = null;

                Gzip.Write(Buffer, 0, Buffer.Length);
                Gzip.Close();

        }

        private void butBrowseIn_Click(object sender, EventArgs e)
        {
            OpenFileDialog OFDialog = new OpenFileDialog();
            OFDialog.ShowDialog();
            txtFileIn.Text = OFDialog.FileName;
        }

        private void butBrowseOut_Click(object sender, EventArgs e)
        {
            SaveFileDialog OFDialog = new SaveFileDialog();
            OFDialog.Filter = "GZip File |.zip";
            OFDialog.AddExtension = true;
            OFDialog.ShowDialog();
            txtFileOut.Text = OFDialog.FileName;
        }
    }

    class AgumentHolder
    {
        public string InputFile { get; set; }
        public string OutputFile { get; set; }
    }
}

Kan ikke finde nået anden indlæg med sammen problem. Nogen der har en ide om hvad der er galt?
Avatar billede janus_007 Nybegynder
09. marts 2010 - 12:53 #1
Du skal sætte navnet eksplicit på GZip tænker jeg :)
Avatar billede heinmain Nybegynder
09. marts 2010 - 13:04 #2
Ikke helt sikker hvor du mener det med at sætte navn.
" OFDialog.Filter = "GZip File |.zip";" Her du mener jeg skal sætte ".zip" til gzip? For det virker heller ikke :( Har prøvet lidt af hvert og set på andre kode eksempler rundt på google men uden rigtig held med at kunne se fejlen.
Avatar billede bvli Praktikant
09. marts 2010 - 13:26 #3
GZip bruger du ikke li'som almindelig (pk)zip hvor du danner et 'arkiv' (zip archive)
.
Gzip komprimerer bare den bytestream du sender den. Så normalt hvis du har en fil der hedder 'test.doc' vil du komprimere den og kalde outputfilen for 'test.doc.gz'. Når du så deflater den gør du det til samme filnavn minus .gz.

Skal du have et library som kan lave alm. zip-filer og som er skrevet i managed kode, kan du kigge på: http://icsharpcode.com/OpenSource/SharpZipLib/Default.aspx
Avatar billede heinmain Nybegynder
09. marts 2010 - 13:32 #4
Ja okay forklarer det hele. Mange tak for svaret samt linket. Vil lige kigge lidt på det :)
Avatar billede heinmain Nybegynder
09. marts 2010 - 13:34 #5
Bvli kan du ikke skrive som svar så jeg kan lukke tråden?
Avatar billede bvli Praktikant
09. marts 2010 - 14:02 #6
Jo :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester