Есть несколько случаев, о которых вы спрашиваете, но Ни один из них не является родным языком.
Ниже приведены то касаются
- Что такое файловая система файла источника/назначения?
- Вы хотите сохранить исходный файл?
- Они лежат на одном диске?
В C#, вы почти не метод может быть быстрее, чем File.Copy
, призывающее CopyFile
из WINAPI
внутри. Однако из-за этого процент составляет 50, однако следующий код может быть не быстрее. Он копирует весь файл, а затем установить длину файла назначения
var info=new FileInfo(fileName);
var percentSplit=info.Length*50/100; // extract 50% of file
File.Copy(info.FullName, splitName);
using(var outStream=File.OpenWrite(splitName))
outStream.SetLength(percentSplit);
Далее, если
- вы не держите оригинал после файла расщепляется
- диск назначения является таким же, как источник
- ваш не используя сжатие включена файловая система шифрования/
то, лучшее, что вы можно сделать, не копировать файлы вообще. Например, если исходный файл находится на FAT
или FAT32
файловой системы, что вы можете сделать, это
- создать новую запись директории (записи) для вновь расщепленных частей файла
- пусть запись (запись) точка (s) к кластеру целевой части (частей)
- установить размер правильный файл для каждой записи
- чек на сшивку и избежать этого
Если ваша файловая система пром s NTFS
, вам, возможно, потребуется потратить много времени на изучение спецификации.
Удачи вам!
извлечение 50% файла неэффективно [почему 4kb до 8kb] (http://stackoverflow.com/a/5911016/495455). Если у вас есть .Net 4 или более, вы можете использовать [Файлы с памятью] (http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile.aspx) –
Что такое производительность вашего диска система? 100 МБ/с действительно звучит довольно разумно. –
Могу ли я спросить, для чего вы разбиваете файл? Является ли разделение файла конечным результатом или это промежуточный шаг для решения другой проблемы? –