Home > lang > open 
 en fr de es nl pl pt pt_BR mk sq ca hu cs tr ar fa id vi ko ja ru zh zh_TW eo
Precedente  Successivo  Modifica  Rinomina  Undo  Refresh  Search  Amministrazione  
Documentazione
History
 
Attenzione! Questa pagina non è aggiornata.  Vedi versione in inglese 
OPEN
Flusso = OPEN NomeFile FOR [ READ | INPUT ] [ WRITE | OUTPUT ] [ CREATE | APPEND ] [ WATCH ]

Apre un file in modo lettura, scrittura, creazione o aggiunta dati. Se la parola chiave CREATE non è specificata, allora il file deve esistere.

Se il file viene aperto, un'oggetto (object) stream viene restituito nella variabile (variabile) Flusso.

Attenzione! Per impostazione predefinita, gli streams sono bufferizzati. Se viceversa si cerca di avere degli streams non bufferizzati, allora si rende necessario l'uso delle parole chiave READ o WRITE in modo esplicito.

Diversamente da altri dialetti BASIC, Gambas non cancellerà mai un file quando esso viene aperto con la parola chiave WRITE. Quindi se il nuovo contenuto è più piccolo di quello vecchio, una parte del file non desiderata resterà in coda al file modificato. Per evitare questa situazione (che non è un difetto in quanto può far comodo in altri contesti), bisogna aprire il file includendo la parola chiave CREATE.

Errori

MessaggioDescrizione
Access forbidden (43) L'accesso richiesto per il file non è consentito, o il permesso di ricerca è negato per una delle directory se nel percorso specifico il file non esiste ancora, oppure l'accesso in scrittura alla directory padre non è permessa.

File is a directory (46) NomeFile se riferito a una directory. Usare al suo posto la funzione Dir.
File or directory does not exist ( NomeFile non esiste, o la directory componenti nel percorso specifico non esiste oppure è un link simbolico orfano.
Out of memory (1) Il sistema è andato in out of memory (supero capacità).
Device is full (37) NomeFile doveva essere creato, ma il dispositivo contenente NomeFile non ha spazio sufficiente per il nuovo file.
Not a directory (49) Un componente usato come directory in NomeFile non è, di fatto, una directory.
System error... (42) Altri possibili errori di sistema:

  • troppi link simbolici sono stati riscontrati nella risoluzione NomeFile.
  • Il processo è già al massimo numero di file aperti.
  • E' stato raggiunto il limite sul numero totale di file aperti dal sistema.
  • NomeFile fa riferimento a un file speciale di dispositivo e nessun dispositivo corrispondente esiste.
  • Il file di nome è una pipe e nessun processo ha aperto il file per la lettura.
  • NomeFile fa riferimento a un file su un filesystem in sola lettura mentre è stata chiesta la scrittura.
  • NomeFile rimanda a un'immagine eseguibile che è attualmente in esecuzione mentre è stata chiesta la scrittura.

Esempio

' Stampa il contenuto di un testo sullo schermo.

DIM hFile AS File
DIM sLine AS String

hFile = OPEN "/etc/passwd" FOR INPUT

WHILE NOT Eof(hFile)
  LINE INPUT #hFile, sLine
  PRINT sLine
WEND

' Guarda la porta seriale ttyS0 (com1).

DIM hFile AS File

hFile = OPEN "/dev/ttyS0" FOR READ WRITE WATCH

...

PUBLIC SUB File_Read()

  DIM iByte AS Byte

  READ #hFile, iByte
  PRINT "Hai un byte: "; iByte

END

' Lettura dei dati da un file BMP, conoscendo il formato di tipo little-endian:

DIM hFile AS File
DIM iData AS Integer

hFile = OPEN "image.bmp" FOR INPUT
hFile.ByteOrder = gb.LittleEndian
...
READ #hFile, iData

Vedi anche

Funzioni di Stream e Input/Output, Funzioni su file e directory, Percorsi di File e Directory, Stream