Page 1 of 1
Folder Deleting
Posted: 11 Apr 2015 12:14
by ahmednadi
Dear Sirs;
I hope to find all of you in good health.
Could you help me to delete a folder and its contents?
Regards;
AHMED NADY
Posted: 11 Apr 2015 21:54
by Thomas Linder Puls
If you mean remove from the project but keep the files on the disk then select the folder in the project tree (in the IDE) and press the DEL key.
If you mean really delete the folder from the disk you can open the folder in an explorer (can be done from the project tree right clicking on the folder and select Explore...) and then deleting it there (also using the DEL key).
Posted: 13 Apr 2015 9:57
by ahmednadi
Dear Sir;
Thank you for your reply.
I mean Delete that delete the folder from the disk.
I want to create a predicate to delete a selected folder to be deleted with its contents.
When I try this, error appears telling me that the folder has contents.
Therefore, I want to delete the folder with its contents whatever.
Regards;
Eng. Ahmed Nady
Posted: 13 Apr 2015 12:08
by Gukalov
Hi.
Just remove subfolder by subfolder, file by file.
Code: Select all
class predicates
deleteFolder : (string Folder).
clauses
deleteFolder(Folder) :-
foreach SubFolder = directory::getSubDirectories_nd(Folder) do
deleteFolder(SubFolder)
end foreach,
directory::forAllFiles(Folder,
{(File) :-
% file::setAttributes(File, [fileSystem_api::readOnly], false),
file::delete(File)}),
directory::deleteDirectory(Folder).
Do not forget catch errors according your needs.
Posted: 14 Apr 2015 12:21
by Tonton Luc
Hi,
Code: Select all
clauses
onTest(_Source, _MenuTag):-
mainExe::getFileName(Root,_),
if Path = directory::browseForFolder(getVpiWindow(),"Please select a folder :",Root,false) then
Stop = varM::new(0),
foreach F = directory::getFilesInDirectoryAndSub_nd(Path) do
try
file::delete(F)
catch _ do
Stop:value := 1,
succeed()
end try
end foreach,
if Stop:value = 0 then
try
directory::deleteDirectory(Path)
catch _ do
succeed()
end try
else
vpiCommonDialogs::note("Cannot delete :","this folder is not empty.")
end if
end if.
Posted: 14 Apr 2015 16:47
by Gukalov
Bonjour.
It lacks subFolders deleting, looks like...
I use something like this:
Code: Select all
class predicates
deleteFolder : (string Folder) -> setM{string FileName} Undeleted.
clauses
deleteFolder(Folder) = Set :-
Set = setM_redBlack::new(),
deleteFolder(Folder, Set).
class predicates
deleteFolder : (string Folder, setM{string FileName} Undeleted).
clauses
deleteFolder(Folder, Set) :-
foreach SubFolder = directory::getSubDirectories_nd(Folder) do
deleteFolder(SubFolder, Set)
end foreach,
directory::forAllFiles(Folder,
{(File) :-
try
file::delete(File)
catch _ do
Set:insert(File)
end try}),
try directory::deleteDirectory(Folder) catch _ do succeed() end try.
If the set:isEmpty() after calling, then deleting complete, else there are files to do what it need to do with.