Saltar al contenido principal
Versión: 19

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:

filesystemDesigna
"/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 escapeCarácter reemplazado
\nLF (Nueva línea)
\tHT (Tabulación horizontal)
\rCR (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)