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); }
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; }