C# Łączenie Części Pliku W Jeden Plik

0

Kod:

public void mergeFiles(string dir) //dir jest np. '/path/file.txt.gz'
{
    for (int i = 0; i < parts; i++)
    {
        if (!File.Exists(dir))
        {
            File.Create(dir).Close();
        }
        var output = File.Open(dir, FileMode.Open);
        var input = File.Open(dir + ".part" + (i + 1), FileMode.Open);
        input.CopyTo(output);
        output.Close();
        input.Close();
        File.Delete(dir + ".part" + (i + 1));
    }
}

Witam, mam problem.
Mam archiwum .gz podzielone na 8 części i od tygodnia walczę z tym, jak te pliki połączyć w jedno archiwum, a potem je wypakować. Używając powyższej funkcji pliki się łączą, ale archiwum jest uszkodzone. Ma ktoś jakiś pomysł jak to mogę zrobić?

3

Niech mnie ktoś poprawi ale wydaje mi się że łączenie plików nie odbywa się w taki sposób. Przecież tam sam różne algorytmy kompresujące itp.

1

a skąd pomysł że pliki się łączą? Otwierasz plik cały czas na początku i nadpisujesz jego zawartość kolejnymi plikami.
Jeśli chcesz dopisywać do pliku użyj FileMode.Append, albo użyj Seek na koniec pliku, albo otwórz plik wyjściowy tylko raz przed pętlą i zamknij go po pętli (sugeruję to rozwiązanie).

To oczywiście przy założeniu że archiwum faktycznie jest zwyczajnie pocięte na mniejsze pliki (na przykład total commanderem) a nie jest podzielone na pliki przez archiwizator - wtedy potrzebujesz biblioteki obsługującej dany rodzaj plików

0
Janeczek napisał(a):

Mam archiwum .gz podzielone na 8 części i od tygodnia walczę z tym, jak te pliki połączyć w jedno archiwum, a potem je wypakować.

copy /b plik1 + plik2 + plik3 + plik4 + plik5 + plik6 + plik7 + plik8 plikcaly

1 użytkowników online, w tym zalogowanych: 0, gości: 1