* işareti: sunucu mu, istemci mi?

TROIA'daki tüm dosya komutları uygulama sunucusunda çalışır. Bir dosya yolu * ile başlıyorsa istemci (client) tarafındaki bir dosyayı işaret eder; sunucu, dosyayı gerektiğinde istemciden kendine kopyalar (ya da tam tersi):

LOCAL:
    STRING ISTEMCI_YOLU,
    STRING SUNUCU_YOLU;

ISTEMCI_YOLU = '*C:\Kullanicilar\Enes\Desktop\rapor.txt';
SUNUCU_YOLU = '.\Raporlar\rapor.txt';

Dosya açma, yazma, okuma, kapatma

Bir dosyayı açmak için OPEN FILE, kapatmak için CLOSE FILE kullanılır. Açılış modu (FORNEW, FORREAD, FORAPPEND) hem işlemi hem de istemci-sunucu arasında dosyanın hangi yönde kopyalanacağını belirler:

LOCAL:
    STRING YOL;

YOL = '.\Raporlar\log.txt';

OPEN FILE YOL FORNEW;
PUT 'İlk satır';
PUT 'İkinci satır', ' devamı';
CLOSE FILE;

OPEN FILE YOL FORREAD;
GET SATIR;
CLOSE FILE;

PUT her çağrıda otomatik olarak satır sonu ekler; eklememesi için NOENDOFLINE parametresi kullanılır.

FILEID: aynı anda birden fazla dosya

Varsayılan olarak TROIA aynı anda yalnızca bir dosya açık tutmanıza izin verir. Birden fazla dosyayla eş zamanlı çalışmak için her OPEN FILE/CLOSE FILE/PUT/GET çağrısına ayrı bir FILEID verilmelidir:

OPEN FILE YOL1 FORNEW FILEID 'F1';
OPEN FILE YOL2 FORNEW FILEID 'F2';

PUT 'Birinci dosyaya' FILEID 'F1';
PUT 'İkinci dosyaya' FILEID 'F2';

CLOSE FILE FILEID 'F1';
CLOSE FILE FILEID 'F2';

Diğer faydalı komutlar

FILELIST bir klasördeki dosyaları bir TABLE'a doldurur, FILEEXISTS bir dosyanın var olup olmadığını kontrol eder, DELETEFILE siler, ZIPFILE/UNZIPFILE sıkıştırma/açma işlemini tek komutla yapar. Hepsi hem sunucu hem istemci yolları için (yani * ön ekiyle) çalışır.

Sonuç

TROIA'nın dosya API'si küçük ama eksiksiz — asıl dikkat edilmesi gereken nokta, her işlemin gerçekte sunucuda çalıştığını ve * işaretinin istemci tarafını belirttiğini unutmamak.