Les dates et heures
Les dates en Rebol peuvent être représentées par plusieurs
formats
Année Mois Jour ou
Jour Mois Année.
Le séparateur peut être le
- ou le
/.
dateOperation: 01/12/2002
print type? dateOperation ;renvoi date
print dateOperation ; renvoi 1-Dec-2002
;Le mois peut-être abrégé :
dateOperation: 01-dec-2002
print dateOperation ; renvoi 1-Dec-2002
Les date peuvent également inclure une heure et un fuseau horaire.
Dans ce cas, il faut séparer la date de l'heure par un / (slach), le
décalage du fuseau horaire (facultatif) est précédé
du signe + ou du signe -
dateEvenement1: 01-12-2002/22:17 ; le 1er décembre à 22h17
dateEvenement2: 03-12-2002/08:55+2:00 ; le 3 décembre 2002 à 8h55, avec un fuseau de + 2
Différentes options permettent d'extraire le jour, le mois ...
print dateEvenement2/day ; renvoi le jour soit 3
print dateEvenement2/month ; renvoi le mois soit 12
print dateEvenement2/yeay ; renvoi l'année soit 2002
print dateEvenement2/weekday ; renvoi le jour de la semaine soit 2 pour le mardi
print dateEvenement2/time ; renvoi l'heure complète, soit 8:55
print dateEvenement2/time/hour ; renvoi l'heure, soit 8
print dateEvenement2/time/minute ; renvoi les minutes, soit 55
print dateEvenement2/zone ; renvoi le décalage, soit 2:00
La fonction
date? permet de tester si une variable est de type DATE!
varTmp: 01-03-2003
print date? varTmp ; renvoi True
La fonction
to-date permet de convertir une variable en variable de
type DATE!
varTmp: "01/05/2002"
print type? varTmp ; renvoi string
varTmp2: to-date varTmp
print type? varTmp2 ;renvoi date
On peut ajouter ou soustraire des jours à des dates :
dateE: 01-01-2003
dateZ: dateE + 50
print dateZ ; renvoi 20-Feb-2003
Le système de fichiers
En Rebol, quelque soit la plateforme (Windows, Unix, Linux ...), le nommage
des chemins d'accès des fichiers et répertoires est standard.
Chaque chemin d'accès est précédé du signe % et
le séparateur étant le / (slash). Si l'on met des anti-slash,
Rebol les convertit en /.
On peut également utiliser les double-quotes ("") pour encadrer
un chemin d'accès contenant des espaces.
fichierLog: %/D/report/fv/lad.log
fichierLog2: %/home/report/fv/lad.log
fichierLog3: %"/c/program Files/report/fv/lad.log"
print type? fichierLog3 ;renvoi File, la variable est de type FILE!
Sous Windows, les disques C: D: E: sont notés : /C /D /E
dirTemp: %/c/temp ; C:\temp sous Windows
On peut également utiliser le point (.) et le double point (..) :
dirParent: %..
fichierConf: %../conf/appli.conf
La fonction
exists? permet de tester l'existance d'un fichier ou d'un
dossier :
fichierSys: %/c/autoexec.bat
print exists? fichierSys ; renvoi True, le fichier C:\autoexec.bat existe
La fonction
size? renvoie la taille du fichier en octets :
fichier: %/c/appli/conf/pm.conf
print size? fichier ; renvoi 2589 la taille de ce fichier
La fonction
modified? renvoie la dernière date de modification
d'un fichier :
fichier: %/c/appli/conf/pm.conf
print modified? fichier ; renvoi 16-Dec-2002/16:25:14+1:00, dernière date de modification
La fonction
to-file permet de convertir une chaine de caractères
en variable de type File! :
fichier: "/c/temp/appli.data"
fichier2: to-file fichier
print type? fichier2 ;renvoi file
print fichier2 ; renvoi /c/temp/appli.data
La fonction
split-path permet d'obtenir le chemin et le nom d'un fichier :
fichier: %/c/compta/log/cpt200212.log
fic: split-path fichier
print type? fic ; fic est de type Block!
print fic/1 ; renvoi /c/compta/log
print fic/2 ; renvoi cpt200212.log
print type? fic/1 ; renvoi file
print type? fic/2 ; renvoi file
Lecture d'un fichier :
read
donnee: read %/c/az/fic.dat
print donnee ; la variable donnee contient le contenu du fichier
print type? donnee ; donnee est du type String!
Lecture d'un fichier par lignes :
read/lines
lignes: read/lines %/c/az/fic.dat
foreach ligne lignes [print ligne] ;parcourt du block pour affichage de chaque ligne
print type? lignes ; lignes est de type block!
Lecture d'un fichier binaire :
read/binary
image: %/c/img.jpg
data: read/binary image
print type? data ; renvoi binary
Ecriture dans un fichier :
write
fichierLog: %/c/resultats/appli.log ;le dossier /c/resultats doit exister
write fichierLog "Erreur dans le calcul ...."
Ecriture dans un fichier existant en Ajout :
write/append
fichierLog: %/c/resultats/appli.log
write/append fichierLog "Transfert Ok...." ; ajout au fichier existant,
;s'il n'existe pas, le fichier est créé.
Ecriture d'un fichier binaire :
write/binary
fichier: %/c/invaders.dat
texte: {Les envahisseurs. Ces êtres étranges venus d'une autre
planète. Leur destination: la Terre. Leur but: en faire leur univers.
David Vincent les a vus. Pour lui, tout a commencé par une nuit sombre,
le long d'une route solitaire de campagne, alors qu'il cherchait un raccourci
qu'il ne trouva jamais. Cela a commencé par une auberge abandonnée,
et par un homme que le manque de sommeil avait rendu trop las pour continuer
sa route. Cela a commencé par l'atterrissage d'un vaisseau venu d'une
autre galaxie. Maintenant, David Vincent sait que les Envahisseurs sont là,
qu'ils ont pris forme humaine, et qu'il lui faut convaincre un monde incrédule
que le cauchemar à déjà commencé.}
data: compress texte ; compression du texte
write/binary fichier data ; écriture du texte compressé dans le fichier
Suppression de fichiers :
delete
delete %/c/temp/resultats.txt
delete/any %/c/temp/*.tmp ; suppression de tous les fichiers .tmp
Lecture du contenu d'un répertoire :
read
dir: read %. ; lit le dossier courant (.) et envoi le contenu dans la variable dir de type block
foreach entree dir [print entree] ; affiche le contenu du dossier : fichiers + sous-dossiers
Création d'un dossier :
make-dir
make-dir %/c/temp/recup
Renommage de dossier :
rename
rename %/c/temp/recup %/c/temp/docs
Suppression d'un dossier :
delete
delete %/c/temp/docs/ ; ne pas oublier le / final pour indiquer un dossier
delete %../appli/jgh/
Dossier courant :
what-dir
print what-dir
Changement de dossier :
change-dir
change-dir %/c/appli/log/