Les commandes de Smile agissant sur des fichiers binaires sont read binary et write binary. Pour ouvrir la section du dictionnaire correspondant à l'un de ces termes, sélectionnez-le dans un terminal AppleScript et appuyez sur les touches ⇧⌘F.
L'exemple suivant lit 10 000 valeurs dans un fichier généré par un code FORTRAN en simple précision.
set a to (read binary alias "myFile" as small real skip 4 length 10000)
Dans cet exemple nous sautons les quatre premiers caractères, en supposant que le code FORTRAN - comme c'est habituellement le cas - encadre les données qu'il écrit par des blocs de quatre octets nuls.
Lorsque vous écrivez des données dans un fichier binaire à l'aide de write binary, vous pouvez spécifier à quel offset vous voulez écrire les données. write binary écrit par défaut les données en double précision, aussi faut-il pour les relire avec read binary préciser read binary [...] as real.
Pour faire en sorte que write binary crée le fichier de destination, utilisez la construction file f comme dans l'exemple suivant :
set f to (path to "docs" as text) & "temp.temp"
write binary file f with data a
AppleScript supporte deux classes pour se référer à des fichiers, les file specification, comme file "Startup:Applications:Calculator", et les alias, comme alias "Startup:Applications:Calculator". Un alias se réfère obligatoirement à un fichier existant. Il est recommandé d'utiliser des aliases pour scripter le Finder.
Si vous voulez insérer des blocs de remplissage de quatre octets nuls, encadrez vos appels à write binary avec des lignes write 0 in f. write 0 in f écrit quatre octets nuls.
Nous avons utilisé précédemment read binary et write binary avec des file references. Au lieu de cela, vous pouvez utiliser le nombre servant de référence renvoyé par la commande open for access d'AppleScript. Si vous faites plusieurs écritures successives, vous pouvez rendre l'accès au fichier plus rapide en faisant ainsi.
set f to (path to "docs" as text) & "temp.temp"
set refNum to open for access (f as alias)
write binary refNum with data a
close access refNum
|