Skip to main content
Version: Next

Path to object

Path to object ( path {; pathType} ) : Object

ParameterTypeDescription
pathTextPathname
pathTypeIntegerType of path syntax: System (default) or Posix
Function resultObjectObject describing the path contents

Description

The Path to object command returns an object containing the specific properties of the path you passed in parameter.

By default, if you omit the pathType parameter, it will be assumed that you passed a system path, containing system separators ("\" on Windows, ":" on macOS). If you passed a Posix path containing Posix separators ("/") or want to express the path type, pass one of the following constants in the pathType parameter:

ConstantTypeValueComment
Path is POSIXInteger1The path is expressed using the Posix syntax
Path is systemInteger0(Default) The path is expressed using the current system syntax (Windows or macOS)

The command returns an object resulting from parsing the path. The following properties are available:

PropertyTypeDescription
parentFolderTextDirectory information for the path. The last character is always a folder separator.
nameTextFinal file or folder name of the specified path, without extension.
extensionTextExtension of the final file or folder name. Always starts with ".". Empty string "" if no extension.
isFolderBooleanTrue if name is a folder name, false otherwise (default is false)

It will be assumed that you passed a folder path if the last character of path is a separator corresponding to the path type (for example "\" on Windows). Otherwise, it will be assumed that you passed a file name.
The extension, if not empty, is returned regardless of whether the path represents a file or a folder. In either case, you need to concatenate the name and extension in order to retrieve the full name.

Note that Path to object only handles strings. It neither checks if the path is valid with regards to the path type, nor the actual existence of any file or folder.

Example 1

The following examples show various results with file paths:

 var $o : Object
 $o:=Path to object("C:\\first\\second\\fileZ") //on Windows
  //$o.parentFolder="C:\\first\\second\\"
  //$o.name="fileZ"
  //$o.extension=""
  //$o.isFolder=false
 var $o : Object
 $o:=Path to object("osx:Users:john:Documents:Comments.text)  //on macOS
  //$o.parentFolder="osx:Users:john:Documents:"
  //$o.name="Comments"
  //$o.extension=".text"
  //$o.isFolder=false
 var $o : Object
 $o:=Path to object("\\images\\jan\\pict1.png";Path is system) //on Windows
  //$o.parentFolder="\\images\\jan\\"
  //$o.name="pict1"
  //$o.extension=".png"
  //$o.isFolder=false

Defining a path to a folder:

 var $o : Object
 $o:=Path to object("osx:Users:oscargoldman:Desktop:Databases:") //macOS
  //$o.parentFolder="osx:Users:oscargoldman:Desktop:"
  //$o.name="Databases"
  //$o.extension=""
  //$o.isFolder=True
 var $o : Object
 $o:=Path to object("C:\\4D\\Main\\216410\\64\\4D\\4D.user\\")  //windows
  //$o.parentFolder="C:\\4D\\Main\\216410\\64\\4D\\"
  //$o.name="4D"
  //$o.extension=".user"
  //$o.isFolder=true
 var $o : Object
 $o:=Path to object("/first/second.bundle/";Path is POSIX)
  //$o.parentFolder="/first/"
  //$o.name="second"
  //$o.extension=".bundle"
  //$o.isFolder=true

If the path is a root directory, parentFolder is empty:

 var $o : Object
 $o:=Path to object("C:\\")  //on windows
  //$o.parentFolder=""
  //$o.name="c:"
  //$o.extension=""
  //$o.isFolder=true
 var $o : Object
 $o:=Path to object("osx:") //on macOS
  //$o.parentFolder=""
  //$o.name="osx"
  //$o.extension=""
  //$o.isFolder=true

If the last portion of the path is ".something", it is considered as a file name:

 var $o : Object
 $o:=Path to object("/folder/.invisible";Path is POSIX)
  //$o.parentFolder="/folder/"
  //$o.name=".invisible"
  //$o.extension=""
  //$o.isFolder=false

Example 2

You can combine this command with the Object to path to rename a file in a path:

 var $o : Object
 var $path : Text
 $o:=Path to object("C:\\4D\\resources\\images\\4D.jpg")
  //$o.parentFolder="C:\\4D\\resources\\images\\"
  //$o.name="4D"
  //$o.extension=".jpg"
  //$o.isFolder=false
 
 $o.name:="4DOld"
 $path:=Object to path($o)
  //$path="C:\4D\resources\images\4DOld.jpg"

Example 3

You want to know the number of subfolders contained in a path:

 var $o : Object
 var $path : Text
 var $vCount : Integer
 $path:=Select folder //let the user select a folder
 $o:=Path to object($path)
 Repeat
    $o:=Path to object($o.parentFolder)
    $vCount:=$vCount+1
 Until($o.parentFolder="")
 ALERT("The path depth is: "+String($count))

See also

Convert path POSIX to system
Convert path system to POSIX
File
Folder
Object to path
Test path name

Properties

Command number1547
Thread safe