Страница 1 из 1

Разрезание файла, пока есть место на диске

Добавлено: Чт сен 18, 2014 5:50 am
avmaksimov
Было у меня две флешки и на обоих недостаточно место для большого файла. Но на две флешки, если разрезать файл, то можно..

И тут я столкнулся с несколькими проблемами:
1) постарался распилить в ту же папку: для этого мне пришлось вручную указывать путь назначения тем же, что и источник. Вторая подпроблема, это то, что не поддерживается дробная часть (к примеру, 3.6 Gb). Но это было бы не актуально, если бы не п.2;
2) не хватает возможности при копировании (не вынося в отдельную функцию разрезания) копирования до конца места с запросом следующего пункта назначения. Т.е. чтобы именно был запрос (по умолчанию, можно прежний пункт назначения). Я бы указал другую флешку и все... Ну и верх совершенства, возможность указывать через точку с запятой пути (т.е. при "F:\; H:\" записать на F:\ до упора и затем продолжить на H:\).

Жду контраргументов)))).

Добавлено: Чт сен 18, 2014 2:57 pm
Max Diesel
1. Должен признать, что у меня не было расчета на то, что кому-то может понадобиться разрезание файла в тот же каталог... ведь после такого разрезания придется затратить некоторые усилия для того, чтобы отличить исходный файл от его кусков. В моем понимании логичнее сделать временный подкаталог, разрезать файл туда, а потом уже (после выполнения действий, для которых требовалось разрезание) удалить весь этот временный подкаталог с минимумом риска случайного удаления каких-либо еще файлов. Насчет дробных частей - да, я опять-таки не предполагал что кто-то укажет "3.6 GB" вместо "3600 MB", к следующему билду добавлю умение восприятия не-целых чисел.
2. Я подумаю над рациональностью такой модификации, впрочем пока что я склоняюсь к тому, что в ситуации с необходимостью разрезания файла на несколько флэшек, имеющих различное количество свободного места, логичнее просто порезать файл кусками например по 100 мегабайт (при побитости файловой системы флэшки такие куски и восстанавливать проще).

Добавлено: Чт сен 18, 2014 5:21 pm
Qwertiy
avmaksimov писал(а):постарался распилить в ту же папку: для этого мне пришлось вручную указывать путь назначения тем же, что и источник
Можно проще: удалить путь (т. е. оставить пустое поле) или ввести точку.
avmaksimov писал(а):не хватает возможности при копировании (не вынося в отдельную функцию разрезания) копирования до конца места с запросом следующего пункта назначения
Пожалуй, соглашусь. Сам так делал, но вводил размер руками в байтах, а потом растаскивал обрезки. И это не слишком удобно, плюс, нужно дополнительно место под куски.
С другой стороны, может быть эффективнее копировать на разные флешки одновременно, поскольку скорость записи на флешку может быть меньше скорости чтения диска даже с необходимостью позиционирования.
Max Diesel писал(а):в ситуации с необходимостью разрезания файла на несколько флэшек, имеющих различное количество свободного места, логичнее просто порезать файл кусками например по 100 мегабайт
Возможно. Впрочем, это не мешает мне напомнить своё предложение, чтобы можно было выбирать, какие куски надо получить.
Т. е. алгоритм порезать на свободное место, затем скопировать на первую флешку куски с 1 по 3, а на вторую 4, превращаются в отрезать на первую флешку куски с первого по третий и отрезать на вторую флешку куски с четвёртого.
В таком случае нет необходимости не только иметь достаточно места на одном диске для хранения ещё одной копии файла (все куски в сумме столько занимают), но и тратить время на бесполезное копирование кусков на диск.
Кроме того, появляется дополнительная возможность легко отрезать только первый кусок в случае, когда остальное не нужно (например, от недокачанных zip/rar-архивов в dmf-файлах).

Re:

Добавлено: Чт сен 18, 2014 9:16 pm
avmaksimov
Max Diesel писал(а):1. Должен признать, что у меня не было расчета на то, что кому-то может понадобиться разрезание файла в тот же каталог... ведь после такого разрезания придется затратить некоторые усилия для того, чтобы отличить исходный файл от его кусков. В моем понимании логичнее сделать временный подкаталог, разрезать файл туда, а потом уже (после выполнения действий, для которых требовалось разрезание) удалить весь этот временный подкаталог с минимумом риска случайного удаления каких-либо еще файлов. Насчет дробных частей - да, я опять-таки не предполагал что кто-то укажет "3.6 GB" вместо "3600 MB", к следующему билду добавлю умение восприятия не-целых чисел.
2. Я подумаю над рациональностью такой модификации, впрочем пока что я склоняюсь к тому, что в ситуации с необходимостью разрезания файла на несколько флэшек, имеющих различное количество свободного места, логичнее просто порезать файл кусками например по 100 мегабайт (при побитости файловой системы флэшки такие куски и восстанавливать проще).
Получается, я должен при отсутствии доп.диска разрезать на тот же диск, что нерационально и влияет на скорость. Не говоря о том, что мне не нравятся куча файлов. Я сторонник минимализма: меньше файлов, больше наглядности :)