Урок 15 Функции для работы с файлами и папками
April 1, 2006
в колонках играет Ian Gillan & Roger Clover-Lonely Avenue
Прывет, ботаник!Сегодня ты узнаешь как работать с файлами.
Сначала я приведу функции WinApi и их описание, а потом примеры.
DirectoryExists(" Directory");//функция проверяет, существует ли указанная директория, если да то возвращает true
ForceDirectories("Directory");//создаёт папку вместе с подпапками
CreateDir(const AnsiString Dir);//создаёт папку, промежуточные папки не создаются
RemoveDir(const AnsiString Dir);//удалить папку
FileCreate("filename");//создать файл
FileExists("filename");//функция проверяет, существует ли указанный файл, если да то возвращает true
DeleteFile("filename");//удалить файл
RenameFile("OldName", "NewName");//переименовать файл
Для вышеперечисленных функций можно использовать конструкцию:
if(FileExists("c:\\porno.vob")==true){ShowMessage("Так оказывается на вашем компе есть порно-фильм!Ай-Ай-Ай!!");} //если файл c:\porno.vob существует, то появится MessageBox
Остальные функции создания, переименования, удаления возвращают true в случае удачного выполнения и false в случае неудачного выполнения функции.
------------------------------------------------------------------------------------------------
ChangeFileExt("filename"," Extension")//изменить расширение файла
ExtractFilePath("filename");//извлекает из полного пути к файлу его директорию
ExtractFileDir("filename");..//извлекает из полного пути к файлу его директорию , на конце символ "\"
ExtractFileDrive("filename");//извлекает из полного пути к файлу диск, на котором файл находится
ExtractFileName("filename");//извлекает имя файла
ExtractFileExt("filename");//извлекает расширение файла
Все эти функции возвращают строковое значение(AnsiString) , например:
String s,d;
s=Application->ExeName;//присваиваем строковой переменной s
полное имя ехе-файла нашей программы
d=ExtractFileDir(s);
ShowMessage(d);//показываем сообщение со значением переменной d
d=ChangeFileExt(s,".xep");//меняем расширение файла на "хер " при этом новое имя файла присваивается переменной d , а на винчестере расширение у нашего файла не меняется(чтобы изменить, можно использовать функцию RenameFile).
ShowMessage(d);
//МЕНЯЕМ РАСШИРЕНИЕ У ФАЙЛА
s="c:\\test.txt";// имя файла, проверьте, чтобы данный файл был у вас на компе, если нет, то создайте
RenameFile(s,ChangeFileExt(s,".htm"));//меняет у файла расширение, результат вы увидите уже в проводнике
ПОИСК ФАЙЛОВ
// Для поиска файлов в каталоге и его подкаталогах напишите следующий код:
void ListFiles(AnsiString path, TStrings* List)
{
// Эта процедура выводит список файлов и вызывает
// саму себя для всех каталогов
TSearchRec sr;
if (FindFirst(path+"*.*", faAnyFile, sr) == 0)
{
do
{ if (sr.Attr & faDirectory)
{
if (sr.Name!=".")
if (sr.Name!="..")
{
ListFiles(path+sr.Name+"\\",List);// Рекурсивный вызов
}
}
else
{
AnsiString Ext=ExtractFileExt(sr.Name).UpperCase();
if (Ext==".CPP")//если расширение равно cpp, то файл будет добавляться в список
List->Add(path+sr.Name);
}
}
while (FindNext(sr) == 0);
}
Application->ProcessMessages();
}
Киньте на форму Memo1 и Button1 и в событии onClick у кнопки напишите следующий код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListFiles("c:\\",Memo1->Lines);//следите за тем, чтобы путь папки заканчивался " \\"
//Примечание: при указаниии пути к файлу, папке, надо вместо "\" указывать "\\", ибо все символы, начинающиеся на "\", являются эскейп-последовательностями.
}
Если есть вопросы по этому материалу или вопросы в принципе, пишите на мыло,
ответы постараюсь выложить в последующих уроках.
Author of article - MA F*CKA CREW 2006
www.builderhelper.3dn.ru
builder.helper@rambler.ru