Login Register
Frontpage Code library Pastebin

DeleteDirectory()

Author: Jare
Added: 10. tammikuuta 2016 kello 2.14
Edited: 10. tammikuuta 2016 kello 2.14
Category: Tiedostot

Description

Poistaa hakemiston ja koko sisällön rekursiivisesti. VAARALLINEN, olethan tarkka, että annat oikean nimen poistettavalle hakemistolle! Palauttaa: - true, jos hakemisto saatiin poistettua tai jos hakemisto oli poissa jo alunperin - false, jos poisto ei onnistu ollenkaan tai vain osa tiedostoista/alikansioista poistettiin - ja false myös jos olet hölmöillyt ;) - kuten antanut kansion nimen sijasta tiedoston nimen; tai tyhjän merkkijonon. Tyhjä merkkijono viittaa nykyiseen kansioon, ja turvallisuuden vuoksi funktio ei suostu tällöin toimimaan, koska se voi usein olla seurausta väärästä muuttujanimestä kutsulausekkeessa. Jos haluat poistaa nykyisen hakemiston, anna parametriksi joko CurrentDir() tai pelkkä piste "."

Code

Select all
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Function DeleteDirectory(path$)
	If path = "" Then Return False				//This might be a mistake
	If Not FileExists(path) Then Return True	//Already deleted
	If Not IsDirectory(path) Then Return False	//This is a regular file
	
	old_dir$	= CurrentDir()
	recursion$	= "" 
	ChDir path
	StartSearch
	Repeat
		file_name$ = FindFile()
		If file_name = "." Or file_name=".." Or file_name="" Then	//A pointer To this directory Or the paren one. Do nothing.
		ElseIf IsDirectory(file_name) Then							//A directory. Process After EndSearch
			If recursion Then recursion + "?"
			recursion + file_name
		Else														//A file. Remove immediately.
			DeleteFile file_name
		EndIf
	Until file_name = ""
	EndSearch
	
	//Remove subdirectories using recursion
	//This must be done After ending the previous search, As searches can't be stacked in CoolBasic.
	For i = 1 To CountWords(recursion, "?")
		subdirectory$ = GetWord(recursion, i, "?")
		DeleteDirectory(subdirectory)
	Next i
	ChDir old_dir
	DeleteFile path
	Return Not FileExists(path)
EndFunction

Comments

No comments. You can be first!

Leave a comment

You must be logged in to comment.