Che cos’ è un File Splitting? Essenzialmente splittare un file significa dividerlo in parti uguali a nostra dscrezione, ovvero dividerlo per dimensioni parti, o normalmente (ovvero dividendo un file in parti uguali). Oggi vi mostrerò come eseguire questa tecnica in un Windows Form Project usando Visual C# 2008. Bene allora iniziamo…

private void cmdSplit_Click(object sender, EventArgs e)
        {
            if (InputFile.Text == "" || FilePiece.Text == "")
            {
                //FilePiece è la combobox che serve per selezionare le parti in cui dividere il file
                //Input text è la textbox che contiene l'indirizzo o locazione del file da splittare
                MessageBox.Show("Insert a file, or select the parts you want to split the file", "Error");
            }
            else
            {
                string inputFile = InputFile.Text;
                FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
                int numberOFFile = Convert.ToInt32(FilePiece.SelectedItem);
                int sizeOFFiles = (int)Math.Ceiling((double)fs.Length / numberOFFile);

                for (int i = 1; i <= numberOFFile; i++)
                {
                    string baseFile = Path.GetFileNameWithoutExtension(inputFile);
                    string extension = Path.GetExtension(inputFile);
                    FileStream outputFile = new FileStream(Path.GetDirectoryName(inputFile) + "\\" + baseFile +
                                                            "." + i.ToString().PadLeft(5, Convert.ToChar("0")) +
                                                            extension + ".fst", FileMode.Create, FileAccess.Write);
                    int bytesRead = 0;
                    byte[] buffer = new byte[sizeOFFiles];

                    if ((bytesRead = fs.Read(buffer, 0, sizeOFFiles)) > 0)
                    {
                        outputFile.Write(buffer, 0, bytesRead);
                    }
                    outputFile.Close();
                }
                fs.Close();
                MessageBox.Show("Splitting terminated with succes!", "Succes", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

Lascio a voi il compito di decidere quale metodo usare per ricomporre il file 😉

Annunci