Ejemplo n.º 1
0
        public List <NormalChunk> splitFile(string filename, int NumOutputFiles)
        {
            FileStream fppart = new FileStream(filename, FileMode.Open, FileAccess.Read);

            int         fileOffset = 0;
            NormalChunk nc_obj;

            byte[]   bytesource = null;
            FileInfo sourceInfo = new FileInfo(filename);

            int partsize = (int)Math.Ceiling((double)(sourceInfo.Length / NumOutputFiles));

            int sizeremaining = (int)sourceInfo.Length;

            for (int i = 0; i < NumOutputFiles; i++)
            {
                // Calculate the remaining size of the whole file
                sizeremaining = (int)sourceInfo.Length - (i * partsize);

                // The size of the last part file might differ because a file doesn't always split equally
                if (sizeremaining < partsize)
                {
                    partsize = sizeremaining;
                }
                bytesource = new byte[partsize];

                fppart.Seek(fileOffset, 0);
                fppart.Read(bytesource, 0, partsize);

                // Set the new offset
                fileOffset += partsize;

                // create NormalChunk objects
                nc_obj             = new NormalChunk();
                nc_obj.chunk_id    = i;
                nc_obj.chunk_size  = partsize;
                nc_obj.parent_name = filename;

                nc_obj.data_part = bytesource;
                chunk_list.Add(nc_obj);
            }
            // Close the file stream
            fppart.Close();

            Console.WriteLine("Finished splitting the file");
            return(chunk_list);
        }
Ejemplo n.º 2
0
        public List<NormalChunk> splitFile(string filename, int NumOutputFiles)
        {
            FileStream fppart = new FileStream(filename, FileMode.Open, FileAccess.Read);

            int fileOffset = 0;
            NormalChunk nc_obj;

            byte[] bytesource = null;
            FileInfo sourceInfo = new FileInfo(filename);

            int partsize = (int)Math.Ceiling((double)(sourceInfo.Length / NumOutputFiles));

            int sizeremaining = (int)sourceInfo.Length;

            for (int i = 0; i < NumOutputFiles; i++)
            {
                // Calculate the remaining size of the whole file
                sizeremaining = (int)sourceInfo.Length - (i * partsize);

                // The size of the last part file might differ because a file doesn't always split equally
                if (sizeremaining < partsize)
                {
                    partsize = sizeremaining;
                }
                bytesource = new byte[partsize];

                fppart.Seek(fileOffset, 0);
                fppart.Read(bytesource, 0, partsize);

                // Set the new offset
                fileOffset += partsize;

                // create NormalChunk objects
                nc_obj = new NormalChunk();
                nc_obj.chunk_id = i;
                nc_obj.chunk_size = partsize;
                nc_obj.parent_name = filename;

                nc_obj.data_part = bytesource;
                chunk_list.Add(nc_obj);

            }
            // Close the file stream
            fppart.Close();

            Console.WriteLine("Finished splitting the file");
            return chunk_list;
        }