Если Вы используете метод общего назначения, который имеет EventHandler
подпись, которой это называют от любого обработчика событий и передают и object sender
и EventArgs e
, это может звонить e.ToString()
, например, для входа событий, не вызывая беспокойство об исключении нулевого указателя.
Вы можете использовать команду split
с параметром -b
:
split -b 1024m file.tar.gz
Ее можно повторно собрать на машине Windows, используя @ Ответ Джошуа .
copy /b file1 + file2 + file3 + file4 filetogether
Изменить : Как @Charlie заявил в комментарии ниже, вы можете явно указать префикс, потому что в противном случае он будет использовать x
, что может сбивать с толку .
split -b 1024m "file.tar.gz" "file.tar.gz.part-"
// Creates files: file.tar.gz.part-aa, file.tar.gz.part-ab, file.tar.gz.part-ac, ...
Edit : редактирование сообщения, потому что вопрос закрыт, и наиболее эффективное решение очень близко к содержанию этого ответа:
# create archives
$ tar cz my_large_file_1 my_large_file_2 | split -b 1024MiB - myfiles_split.tgz_
# uncompress
$ cat myfiles_split.tgz_* | tar xz
Это решение позволяет избежать необходимости использовать промежуточный большой файл при (де) сжатии . Используйте параметр tar -C, чтобы использовать другой каталог для результирующих файлов. кстати, если архив состоит только из одного файла, можно избежать использования tar и использовать только gzip:
# create archives
$ gzip -c my_large_file | split -b 1024MiB - myfile_split.gz_
# uncompress
$ cat myfile_split.gz_* | gunzip -c > my_large_file
Для Windows вы можете загрузить перенесенные версии тех же команд или использовать cygwin.
Если вы разделяете Linux, вы все равно можете выполнить повторную сборку в Windows.
copy /b file1 + file2 + file3 + file4 filetogether
используйте tar для разделения на несколько архивов
существует множество программ, которые будут работать с tar-файлами в Windows, включая cygwin.
Протестированный код сначала создает один файл архива, а затем разбивает его:
gzip -c file.orig > file.gz
CHUNKSIZE=1073741824
PARTCNT=$[$(stat -c%s file.gz) / $CHUNKSIZE]
# the remainder is taken care of, for example for
# 1 GiB + 1 bytes PARTCNT is 1 and seq 0 $PARTCNT covers
# all of file
for n in `seq 0 $PARTCNT`
do
dd if=file.gz of=part.$n bs=$CHUNKSIZE skip=$n count=1
done
В этом варианте не создается отдельный файл архива, а сразу создаются части:
gzip -c file.orig |
( CHUNKSIZE=1073741824;
i=0;
while true; do
i=$[i+1];
head -c "$CHUNKSIZE" > "part.$i";
[ "$CHUNKSIZE" -eq $(stat -c%s "part.$i") ] || break;
done; )
В этом варианте, если размер файла архива делится на $ CHUNKSIZE
, тогда размер последнего частичного файла будет равен 0 байтам.