Rutas de acceso
Las funciones, propiedades y comandos de las clases File y Folder le permiten manejar los archivos y las carpetas como objetos. Esto hace que la gestión de archivos y carpetas sea poderosa y flexible. Por ejemplo, para crear un nuevo archivo en la carpeta Documentos del usuario actual, puede escribir:
$ok:=Folder(fk documents folder).file("Archives/John4D.prefs").create()
Además, los objetos archivo y carpeta soportan los fileSystems
, que ofrecen una ruta contextual a las carpetas principales de la aplicación.
Rutas de los filesystem
4D acepta varios filesystem
que designan las carpetas 4D específicas con una ubicación variable en macOS y Windows. Las rutas de los filesystem son útiles por dos razones principales:
- Independencia: puede trasladar su solución de un lugar a otro independientemente del sistema operativo, sin tener que preocuparse por las rutas,
- Seguridad: ningún código puede acceder a los elementos situados por encima de la raíz del sistema de los file system en el disco (sandboxing).
Se soportan los siguientes nombres de rutas de filesystem:
filesystem | Designa |
---|---|
"/DATA" | Carpeta de datos actual |
"/LOGS" | Carpeta Logs |
"/PACKAGE" | Carpeta raíz del proyecto (con o sin extensión 4dbase) |
"/PROJECT" | Carpeta Project |
"/RESOURCES" | Carpeta de recursos actual del proyecto |
"/SOURCES" | Carpeta de fuentes del proyecto actual |
Sintaxis POSIX
La sintaxis POSIX es compatible con todas las plataformas. Se recomienda la sintaxis POSIX ya que es la más flexible. Se utiliza por defecto (devuelto por las propiedades file.path y folder.path).
Con esta sintaxis:
- las carpetas están separadas por "/"
- los nombres de ruta absolutos empiezan por "/"
- para subir una carpeta en una ruta relativa, utilice "../" delante del nombre de la ruta (por seguridad, no puede subir en el sistema de archivos).
En la sintaxis POSIX, generalmente se utilizará los nombres de rutas filesystem
con los comandos File
y Folder
, por ejemplo:
$pathFile:=File("/DATA/Archives/file 2.txt")
$pathFolder:=Folder("/RESOURCES/Pictures")
Sintaxis específica de la plataforma
La sintaxis específica de la plataforma depende del sistema operativo en el que se ejecute el comando. Tenga en cuenta que al crear un objeto archivo o carpeta con esta sintaxis, debe declararlo utilizando la constante fk platform path
como parámetro.
Windows
Se soportan los siguientes modelos:
- los separadores de carpetas son ""
- el texto contiene ':' y '' como segundo y tercer carácter,
- el texto comienza con "\".
Ejemplos con Folder
:
$ok:=Folder("C:\\Monday";fk platform path).create()
$ok:=Folder("\\\\svr-internal\\tempo";fk platform path).create()
Entrada de rutas Windows y secuencias de escape
El editor de código 4D permite el uso de secuencias de escape. Una secuencia de escape es un conjunto de caracteres que se utilizan para sustituir un caracter "especial". La secuencia comienza con una barra diagonal inversa \
, seguida de un caracter. Por ejemplo, \t
es la secuencia de escape para el caracter Tab
.
El caracter \
también se utiliza como separador en los nombres de ruta Windows. En general, 4D interpretará correctamente los nombres de ruta Windows que se introduzcan en el editor de código sustituyendo las barras invertidas simples \
por barras invertidas dobles \\`. Por ejemplo,
C:\Folderse convertirá en
C:\Folder`.
Sin embargo, si escribe C:\MyDocuments\New
, 4D mostrará C:\\MyDocuments\New
. En este caso, la segunda \
se interpreta incorrectamente como \N
(una secuencia de escape existente). Por lo tanto, debe introducir un doble "-" cuando quiera insertar una barra invertida antes de un caracter que se utiliza en una de las secuencias de escape reconocidas por 4D.
Las siguientes secuencias de escape son reconocidas por 4D:
Secuencias de escape | Carácter reemplazado |
---|---|
\n | LF (Nueva línea) |
\t | HT (Tabulación horizontal) |
\r | CR (Retorno carro) |
``\` | ``` (Backslash) |
\" | " (Comillas) |
macOS
Se soportan los siguientes modelos (sintaxis HFS+):
- los separadores de carpetas son ":"
- la ruta no debe comenzar con un ":"
Ejemplos con Folder
:
$ok:=Folder("macintosh hd:";fk platform path).create()
$ok:=Folder("Monday:Tuesday";fk platform path).create() //un volume debe llamarse Monday
Rutas absolutas y relativas
Constructores File
y Folder
Los comandos File
y Folder
solo aceptan rutas absolutas. Las rutas relativas no están soportadas y devolverán errores. Por ejemplo, el siguiente código no es permitido:
//ERROR
$ko:=Folder("myFolder").create() //nombre de ruta relativo con constructor
Si quiere manejar los archivos o las carpetas en varias ubicaciones (carpeta de proyecto, carpetas sistema, etc.), puede utilizar filesystems
(ver arriba). Por ejemplo, puede escribir:
$okFolder:=Folder("/PACKAGE/myFolder").create() //carpeta creada a nivel de la estructura
$okFile:=File("/DATA/Prefs/tempo.txt").create() //archivo creado en la carpeta de datos
.file()
y .folder()
Las funciones de los objetos carpeta, tales como folder.file()
y folder.folder()
esperan nombres de ruta POSIX relativos. Por ejemplo:
//para referenciar una carpeta "Picture" dentro de la carpeta de documentos del usuario
$userImages:=Folder(fk documents folder).folder("Pictures")
//para crear una carpeta en el escritorio
$ok:=Folder(fk desktop folder).folder("myFolder").create()
Las rutas absolutas no están soportadas y devolverán errores.
Ejemplos
La flexibilidad de las funciones de archivos y de carpetas le ofrecen varias posibilidades para manipular los archivos y las carpetas, como en los siguientes ejemplos:
$f:=Folder(fk desktop folder).folder("archive/jan2019")
$f2:=Folder("/DATA/archive/jan2019").file("total.txt")
$f3:=Folder("/DATA/archive/jan2019")
$f4:=File("/DATA/info.txt")
$f5:=File("c:\\archives\\local\\jan2019.txt";fk platform path)
$f6:=File(fk backup log file)