Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как соединить файлы

4.8K
21 декабря 2005 года
Jump
128 / / 09.11.2005
Помню находил в винде консольную команду для соединения в один файл содержимого двух файлов.
Кто-нибудь помнит такую? Если да, то подскажите, плз.

А если кто знает как ее реализовать программно, то очень прошу, подскажите и это!

ЗЫ: Я вот не помню эта функция занималась перекачкой содержимого этих файлов, или делала все по умному.
В общем программную реализацию через перекачку не предлагать :) . А консольную команду напомните, пожалста, в любом случае.
315
21 декабря 2005 года
Nick_M
399 / / 29.05.2003
Цитата:
Originally posted by Jump
Помню находил в винде консольную команду для соединения в один файл содержимого двух файлов.
Кто-нибудь помнит такую? Если да, то подскажите, плз.

А если кто знает как ее реализовать программно, то очень прошу, подскажите и это!

ЗЫ: Я вот не помню эта функция занималась перекачкой содержимого этих файлов, или делала все по умному.
В общем программную реализацию через перекачку не предлагать :) . А консольную команду напомните, пожалста, в любом случае.


Консольная команда - copy file1 + file2 outfile

243
22 декабря 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Jump
ЗЫ: Я вот не помню эта функция занималась перекачкой содержимого этих файлов, или делала все по умному.


Что-то я не понимаю, что ты имеешь ввиду под "все по умному". Типа - склеивает 2 файла изменяя записи непосредственно в файловой системе без перемещения данных файла? Честно говоря сомневаюсь, что так можно на уровне API - это же надо много чего в MFT перелопатить! Если можно, то мне то же интересно как.

4.8K
22 декабря 2005 года
Jump
128 / / 09.11.2005
Команда точно была не copy...
243
22 декабря 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Jump
Команда точно была не copy...


Может ты путаешь с cat из *nix?

4.8K
22 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by pacific_7
Может ты путаешь с cat из *nix?



Не... с этим точно не путаю.
Уже весь хелп по консоли перелопатил... нет этой команды, блн. Я начинаю думать... что мне эта команда приснилась :D .

Кстати, ни кто не имеет опыта по работе с MFT? Если есть знающие - направте, пожалста, по нужному руслу (Т.е. литература, идеи на эту тему).

243
22 декабря 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Jump
Кстати, ни кто не имеет опыта по работе с MFT? Если есть знающие - направте, пожалста, по нужному руслу (Т.е. литература, идеи на эту тему).


Можно вопрос не в тему - ЗАЧЕМ? Драйвер писать собрался?
ЗЫ Что-то мне кажется, что MFT, как и все хорошее у мелкомягких, недокументированна :)

4.8K
23 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by pacific_7
Можно вопрос не в тему - ЗАЧЕМ? Драйвер писать собрался?
ЗЫ Что-то мне кажется, что MFT, как и все хорошее у мелкомягких, недокументированна :)



Почему бы и нет ;). А что, нормально... Драйвер для склеивания файлов :)

243
23 декабря 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Jump
Почему бы и нет ;). А что, нормально... Драйвер для склеивания файлов :)


Если и сделаешь - то от него только хуже будет. Даже если без багов напишешь. Он тебе значительно повысит фрагментацию диска.

4.8K
23 декабря 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by pacific_7
Если и сделаешь - то от него только хуже будет. Даже если без багов напишешь. Он тебе значительно повысит фрагментацию диска.


Не вещичка была бы весьма хитрая. Да чувствую мазута там сильно много. Я уж лучше по старинке...
В общем всем спасибо :)

436
25 декабря 2005 года
Fevzi
87 / / 02.04.2005
Цитата:
Originally posted by Jump
Помню находил в винде консольную команду для соединения в один файл содержимого двух файлов.
Кто-нибудь помнит такую? Если да, то подскажите, плз.

А если кто знает как ее реализовать программно, то очень прошу, подскажите и это!

ЗЫ: Я вот не помню эта функция занималась перекачкой содержимого этих файлов, или делала все по умному.
В общем программную реализацию через перекачку не предлагать :) . А консольную команду напомните, пожалста, в любом случае.


//-----------------------------------------

Как добавить один файл в конец другого.

Следующий пример добавлет один файл в конец другого. Приложение открывает два файла функцией CreateFile: ONE.TXT открывается для чтения, а TWO.TXT - для записи. Затем, содержимое ONE.TXT добавляется в конец TWO.TXT путём чтения и записи блоками по 4K при помощи функций ReadFile и WriteFile. Перед записью во второй файл, приложение устанавливает указатель в файле на конец функцией SetFilePointer и блокирует область, которая будет записана функцией LockFile. Тем самым другим процессам будет закрыт доступ во время записи. После каждой операции записи, функцией UnlockFile область разблокируется.



HANDLE hFile;
HANDLE hAppend;
DWORD dwBytesRead, dwBytesWritten, dwPos;
char buff[4096];

// Открываем существующий файл.

hFile = CreateFile("ONE.TXT", // открываем ONE.TXT
GENERIC_READ, // открываем на чтение
0, // не доступен для других
NULL, // нет security
OPEN_EXISTING, // только существующий файл
FILE_ATTRIBUTE_NORMAL, // нормальный файл
NULL); // нет шаблона аттрибутов

if (hFile == INVALID_HANDLE_VALUE)
{
ErrorHandler("Could not open ONE."); // обрабатываем ошибку
}

// Открываем существующий файл, либо если файл не существует,
// то создаём новый.

hAppend = CreateFile("TWO.TXT", // открываем TWO.TXT
GENERIC_WRITE, // открываем на запись
0, // не доступен для других
NULL, // нет security
OPEN_ALWAYS, // открыть или создать
FILE_ATTRIBUTE_NORMAL, // нормальный файл
NULL); // нет шаблона аттрибутов

if (hAppend == INVALID_HANDLE_VALUE)
{
ErrorHandler("Could not open TWO."); // обрабатываем ошибку
}

// Добавляем первый файл в конец второго.
// Блокируем второй файл во время записи в него, чтобы другие
// процессы в это время ничего не смогли сделать с файлом. Когда
// запись завершена, то разблокируем файл.

do
{
if (ReadFile(hFile, buff, 4096, &dwBytesRead, NULL))
{
dwPos = SetFilePointer(hAppend, 0, NULL, FILE_END);
LockFile(hAppend, dwPos, 0, dwPos + dwBytesRead, 0);
WriteFile(hAppend, buff, dwBytesRead,
&dwBytesWritten, NULL);
UnlockFile(hAppend, dwPos, 0, dwPos + dwBytesRead, 0);
}
} while (dwBytesRead == 4096);

// Закрываем оба файла.

CloseHandle(hFile);
CloseHandle(hAppend);

243
25 декабря 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by Fevzi
//-----------------------------------------

Как добавить один файл в конец другого.

Следующий пример добавлет один файл в конец другого.....


Уважаемый, я конечно понимаю, что вы рады, решив эту задачу, но вам не кажется, что все остальные как минимум должны догадываться о данной методе? См. самый первый пост топика: "В общем программную реализацию через перекачку не предлагать" - т.е. не предлагать то, что вы предложили ;)

85K
27 августа 2012 года
yuryk
1 / / 27.08.2012
Цитата: Nick_M
Цитата:
Originally posted by Jump
Помню находил в винде консольную команду для соединения в один файл содержимого двух файлов.
Кто-нибудь помнит такую? Если да, то подскажите, плз.

А если кто знает как ее реализовать программно, то очень прошу, подскажите и это!

ЗЫ: Я вот не помню эта функция занималась перекачкой содержимого этих файлов, или делала все по умному.
В общем программную реализацию через перекачку не предлагать :) . А консольную команду напомните, пожалста, в любом случае.


Консольная команда - copy file1 + file2 outfile


Для бинарных файлов: copy file /B + file2 /B outfile /B
Вводить в [Все программы->Стандартные->Командная строка]. Справка по этой команде: copy /?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог