Folder
Folder
objects are created with the folder
command. They contain references to folders that may or may not actually exist on disk. For example, when you execute the folder
command to create a new folder, a valid folder
object is created but nothing is actually stored on disk until you call the folder.create()
function.
Example
The following example creates a "JohnSmith" folder object:
var curfolder : 4D.Folder
curfolder = folder("/PACKAGE/JohnSmith")
Pathnames
folder
objects support several pathnames, including filesystems
or posix
syntax. Supported pathnames are detailed in the Pathnames page.
Functions and properties
4D.Folder.new()
4D.Folder.new ( path : string ) : 4D.Folder
Description
The 4D.Folder.new()
function creates and returns a new object of the 4D.Folder
type. It is identical to the folder
command (shortcut).
It is recommended to use the
folder
shortcut command instead of4D.Folder.new()
.
.create()
.create()* : boolean
Parameter | Type | Description | |
---|---|---|---|
Result | boolean | ← | true if the folder was created successfully, false otherwise |
Description
The .create()
function creates a folder on disk according to the properties of the folder
object.
If necessary, the function creates the folder hierachy as described in the platformPath or path properties. If the folder already exists on disk, the function does nothing (no error is thrown) and returns false.
Returned value
- true if the folder is created successfully,
- false if a folder with the same name already exists or if an error occured.
Example 1
Create an empty folder in the database folder:
var created : boolean
created = folder("/PACKAGE/SpecialPrefs").create()
Example 2
Creation of the "/Archives2019/January/" folder in the database folder:
var newFolder : 4D.Folder
var info : string
newFolder = folder("/PACKAGE/Archives2019/January")
if(newFolder.create())
info = "The "+newFolder.name+" folder was created."
else
info = "Impossible to create a "+newFolder.name+" folder."
end
.createAlias()
.createAlias*( destinationFolder : 4D.Folder , aliasName : string ) : 4D.File
Parameter | Type | Description | |
---|---|---|---|
destinationFolder | 4D.Folder | → | Destination folder for the alias or shortcut |
aliasName | string | → | Name of the symbolic link |
Result | 4D.File | ← | Alias or shortcut reference |
Description
The .createAlias()
function creates a symbolic link to the folder with the specified aliasName name in the folder designated by the destinationFolder object.
Pass the name of the symbolic link to create in the aliasName parameter.
Returned object
A 4D.File
object with the isAlias
property set to true.
Example
You want to create a symbolic link to an archive folder in your database folder:
var myFolder : 4D.Folder
myFolder = folder("/PACKAGE/Documents/Archives/2019/January")
aliasFile = myFolder.createAlias(folder("/PACKAGE"),"Jan2019")
.delete()
.delete*( { option : integer } )
Parameter | Type | Description | |
---|---|---|---|
option | integer | → | folder deletion option |
Description
The .delete()
function deletes the folder.
By default, for security reasons, if you omit the option parameter, .delete( )
only allows empty folders to be deleted. If you want the command to be able to delete folders that are not empty, you must use the option parameter with one of the following constants:
Constant | Value | Comment |
---|---|---|
kDeleteOnlyIfEmpty | 0 | Deletes folder only when it is empty |
kDeleteWithContents | 1 | Deletes folder along with everything it contains |
When kDeleteOnlyIfEmpty
is passed or if you omit the option parameter:
- The folder is only deleted if it is empty, otherwise, the command does nothing and an error -47 is generated.
- If the folder does not exist, the error -120 is generated.
When kDeleteWithContents
is passed:
- The folder, along with all of its contents, is deleted. Warning: Even when this folder and/or its contents are locked or set to read-only, if the current user has suitable access rights, the folder (and contents) is still deleted.
- If this folder, or any of the files it contains, cannot be deleted, deletion is aborted as soon as the first inaccessible element is detected, and error -45 (The file is locked or the pathname is not correct) is returned. In this case, the folder may be only partially deleted. When deletion is aborted, you can use the
lastErrors
command to retrieve the name and path of the offending file. - If the folder does not exist, the command does nothing and no error is returned.
.moveTo()
.moveTo*( destinationFolder : 4D.Folder { , newName : string } ) : 4D.Folder
Parameter | Type | Description | |
---|---|---|---|
destinationFolder | 4D.Folder | → | Destination folder |
newName | string | → | Full name for the moved folder |
Result | 4D.Folder | ← | Moved folder |
Description
The .moveTo()
function moves or renames the folder
object (source folder) into the specified destinationFolder.
The destinationFolder must exist on disk, otherwise an error is generated.
By default, the folder retains its name when moved. If you want to rename the moved folder, pass the new full name in the newName parameter. The new name must comply with naming rules (e.g., it must not contain characters such as ":", "/", etc.), otherwise an error is returned.
Returned object
The moved folder
object.
Example
You want to move and rename a folder:
var tomove, tomove2 : 4D.Folder
tomove = folder("/SOURCES/Shared/Pictures")
tomove2 = tomove.moveTo(folder("/SOURCES/Shared/Archives"),"Pic_Archives")
.rename()
.rename*( newName : string ) : 4D.Folder
Parameter | Type | Description | |
---|---|---|---|
newName | string | → | New full name for the folder |
Result | 4D.Folder | ← | Renamed folder |
Description
The .rename()
function renames the folder with the name you passed in newName and returns the renamed folder
object.
The newName parameter must comply with naming rules (e.g., it must not contain characters such as ":", "/", etc.), otherwise an error is returned. If a file with the same name already exists, an error is returned.
Returned object
The renamed folder
object.
Example
var toRename : 4D.Folder
toRename = folder("/SOURCES/Shared/Pictures").rename("Images")