File e directory (libreria runtime di Apache OpenOffice)

From Apache OpenOffice Wiki
Jump to: navigation, search

L'utilizzo dei file rappresenta una delle attività di base di un'applicazione. L'API di Apache OpenOffice fornisce un'intera gamma di oggetti con cui potete creare, aprire e modificare i documenti Office. Questi oggetti sono presentati nel capitolo Introduzione all'API di Apache OpenOffice. In ogni caso, talvolta occorre accedere direttamente al file system, eseguire ricerche nelle directory o modificare i file di testo. La libreria runtime di Apache OpenOffice Basic mette a vostra disposizione numerose funzioni fondamentali per queste attività.

Documentation note.png Alcune funzioni di file e directory specifiche DOS non sono più incluse in Apache OpenOffice o la loro funzionalità è limitata. Ad esempio, non è contemplato il supporto delle funzioni ChDir, ChDrive e CurDir. Alcune proprietà specifiche del DOS non sono più utilizzate nelle funzioni che prevedono proprietà dei file come parametri (ad esempio, per differenziare tra file nascosti e file di sistema). Questa modifica si è resa necessaria per garantire il massimo livello possibile di indipendenza dalla piattaforma per Apache OpenOffice.

Amministrazione dei file

Ricerca nelle directory

La funzione Dir in Apache OpenOffice Basic esegue la ricerca di file e sottodirectory nelle directory. Alla prima richiesta, deve essere assegnata a Dir come suo primo parametro una stringa contenente il percorso delle directory in cui eseguire la ricerca. Il secondo parametro di Dir specifica il file o la directory da cercare. Apache OpenOffice Basic restituisce il nome della prima voce di directory individuata. Per richiamare la voce successiva, la funzione Dir dovrebbe essere richiesta senza parametri. Se la funzione Dir non individua più voci, restituisce una stringa vuota.

L'esempio seguente mostra come utilizzare la funzione Dir per richiedere tutti i file situati in una directory. La procedura salva i singoli nomi di file nella variabile AllFiles e quindi la visualizza in una finestra di messaggio.

Sub ShowFiles
  Dim NextFile As String
  Dim AllFiles As String

  AllFiles = ""
  NextFile = Dir("C:\", 0)

  While NextFile  <> ""
    AllFiles = AllFiles & Chr(13) &  NextFile 
    NextFile = Dir
  Wend

  MsgBox AllFiles
End Sub

Lo 0 (zero) utilizzato come secondo parametro nella funzione Dir assicura che Dir restituisca solo i nomi dei file e che le directory siano ignorate. I parametri seguenti possono essere specificati qui:

  • 0: restituisce i file normali
  • 16: sottodirectory

L'esempio seguente è praticamente identico a quello precedente, ma la funzione Dir trasferisce il valore 16 come parametro, che restituisce le sottodirectory di una cartella anziché i nomi dei file.

Sub ShowDirs
  Dim NextDir As String
  Dim AllDirs As String

  AllDirs = ""
  NextDir = Dir("C:\", 16)

  While NextDir <> ""
    AllDirs = AllDirs & Chr(13) &  NextDir
    NextDir  <nowiki>= Dir</nowiki>
  Wend

  MsgBox AllDirs
End Sub
Documentation note.png Quando richiesto in Apache OpenOffice Basic, la funzione Dir utilizzata con il parametro 16, restituisce solo le sottodirectory di una cartella. In VBA, la funzione restituisce anche i nomi dei file standard in modo che sia necessario un ulteriore controllo per richiamare le sole directory. Se si utilizza la funzione CompatibilityMode ( true ), Apache OpenOffice Basic si comporta come VBA e la funzione Dir, usando il parametro 16, restituisce le sottodirectory e i file standard.
Documentation note.png Le opzioni fornite in VBA per la ricerca specifica nelle directory dei file con le proprietà concealed, system file, archived e volume name non esistono in Apache OpenOffice Basic perché le funzioni di file system corrispondenti non sono disponibili in tutti i sistemi operativi.
Documentation note.png Le specifiche di percorso elencate in Dir possono utilizzare i segnaposto * e ? sia in VBA che in Apache OpenOffice Basic. In Apache OpenOffice Basic, a differenza di VBA, il segnaposto * può tuttavia essere solo l'ultimo carattere di un nome e/o estensione di file.

Creazione ed eliminazione di directory

Apache OpenOffice Basic dispone della funzione MkDir per la creazione di directory.

MkDir ("C:\SubDir1")

Questa funzione consente di creare directory e sottodirectory. Se richiesto, si possono creare anche tutte le directory necessarie all'interno di una gerarchia. Ad esempio, se esiste solo la directory C:\SubDir1, la chiamata

MkDir ("C:\SubDir1\SubDir2\SubDir3\")

crea sia la directory C:\SubDir1\SubDir2 che la directory C:\SubDir1\SubDir2\SubDir3.

La funzione RmDir consente di eliminare le directory.

RmDir ("C:\SubDir1\SubDir2\SubDir3\")

Qualora la directory contenga sottodirectory o file, verranno eliminati anch'essi. Si consiglia pertanto di utilizzare RmDir con cautela.

Documentation note.png In VBA, le funzioni MkDir e RmDir sono relative alla sola directory corrente. In Apache OpenOffice Basic, MkDir e RmDir si possono invece utilizzare per creare o eliminare livelli di directory.
Documentation note.png In VBA, RmDir produce un messaggio di errore se una directory contiene un file. In Apache OpenOffice Basic, vengono eliminati la directory e tutti i suoi file. Se si utilizza la funzione CompatibilityMode ( true ), Apache OpenOffice Basic si comporta come VBA.

Copia, ridenominazione, eliminazione e controllo dell'esistenza dei file

La chiamata seguente crea una copia del file Source sotto il nome di Destination:

FileCopy(Source, Destination)

Con l'ausilio della seguente funzione è possibile rinominare il file OldName in NewName. La sintassi della parola chiave As e il fatto che non è utilizzata una virgola risalgono alle radici del linguaggio Basic.

Name OldName As NewName

La chiamata seguente elimina il file Filename. Per eliminare le directory (e i relativi file) avvalersi della funzione RmDir.

Kill(Filename)

La funzione FileExists può essere utilizzata per controllare se esiste un file:

If FileExists(Filename) Then 
  MsgBox "file exists."
End If

Lettura e modifica delle proprietà dei file

Quando si lavora con i file, è talvolta importante essere in grado di stabilire le proprietà dei file, l'ora dell'ultima modifica del file e la sua lunghezza.

La chiamata seguente restituisce alcune proprietà su un file.

Dim Attr As Integer
Attr = GetAttr(Filename)

Il valore restituito è fornito come maschera di bit in cui sono possibili i valori seguenti:

  • 1: file di sola lettura
  • 16: nome di una directory

L'esempio seguente determina la maschera di bit del file test.txt e controlla se è di sola lettura e se si tratta di una directory. Se nessuna delle due è applicabile, a FileDescription è assegnata la stringa "normal".

Dim FileMask As Integer
Dim FileDescription As String

FileMask = GetAttr("test.txt")

If (FileMask AND 1) > 0 Then
  FileDescription = FileDescription & " read-only "
End IF

If (FileMask AND 16) > 0 Then
  FileDescription = FileDescription & " directory "
End IF

If FileDescription = "" Then
  FileDescription = " normal "
End IF

MsgBox FileDescription
Documentation note.png I flag utilizzati in VBA per ricercare le proprietà concealed, system file, archived e volume name dei file non sono supportati in Apache OpenOffice Basic in quanto specifici di Windows e non disponibili (o solo in parte) in altri ambienti operativi.

La funzione SetAttr consente di modificare le proprietà di un file. La chiamata seguente può pertanto essere utilizzata per fornire un file con stato di sola lettura.

SetAttr("test.txt", 1)

Per eliminare uno stato di sola lettura preesistente, avvalersi della chiamata seguente:

SetAttr("test.txt", 0)

La data e l'ora dell'ultima modifica operata su un file sono fornite dalla funzione FileDateTime. Qui la data è formattata in conformità alle impostazioni specifiche del paese utilizzate sul sistema.

FileDateTime("test.txt")   ' Provides date and time of the last file amendment.

La funzione FileLen determina la lunghezza di un file in byte (come numero intero lungo).

FileLen("test.txt")      ' Provides the length of the file in bytes

Scrittura e lettura di file di testo

Apache OpenOffice Basic mette a disposizione una gamma completa di metodi di lettura e scrittura dei file. Le informazioni riportate di seguito sono relative alle operazioni con i file di testo (non i documenti di testo).

Scrittura di file di testo

Per accedere a un file di testo occorre aprirlo. Per eseguire questa operazione, è necessario un descrittore di file libero, che identifichi chiaramente il file per il successivo accesso.

Per creare un descrittore di file libero, avvalersi della funzione FreeFile. Il descrittore di file è utilizzato come parametro per l'istruzioneOpen che apre il file. Per aprire un file in modo da specificarlo come file di testo, usare la chiamata Open seguente:

Open Filename For Output As #FileNo

Filename è una stringa contenente il nome del file. FileNo è il descrittore creato dalla funzione FreeFile.

Una volta aperto il file, l'istruzione Print può essere descritta riga per riga:

Print #FileNo, "This is a test line."

FileNo rappresenta anche qui il descrittore di file. Il secondo parametro specifica il testo da salvare come riga del file di testo.

Una volta completato il processo di scrittura, il file deve essere chiuso utilizzando una chiamata Close:

Close #FileNo

Anche qui dovrete specificare il gestore di file.

L'esempio seguente mostra come aprire, descrivere e chiudere un file di testo:

Dim FileNo As Integer
Dim CurrentLine As String
Dim Filename As String

Filename = "c:\data.txt"            ' Define file name 
FileNo = Freefile               ' Establish free file handle

Open Filename For Output As #FileNo         ' Open file (writing mode)
Print #FileNo, "This is a line of text"      ' Save line 
Print #FileNo, "This is another line of text"   ' Save line 
Close #FileNo                  ' Close file

Lettura di file di testo

La lettura dei file di testo avviene secondo le stesse modalità della scrittura. L'istruzione Open utilizzata per aprire il file contiene l'espressione For Input in luogo dell'espressione For Output. Per leggere i dati è opportuno utilizzare l'istruzione Line Input anziché il comando Print di scrittura dei dati.

Infine, quando si richiama un file di testo, viene impiegata l'istruzione eof per controllare se è stata raggiunta la fine del file:

eof(FileNo)

L'esempio seguente illustra come eseguire la lettura di un file di testo:

Dim FileNo As Integer
Dim CurrentLine As String
Dim File As String
Dim Msg as String

' Define filename 
Filename = "c:\data.txt"

' Establish free file handle
FileNo = Freefile

' Open file (reading mode)
Open Filename For Input As FileNo

' Check whether file end has been reached
Do While not eof(FileNo)
  ' Read line 
  Line Input #FileNo, CurrentLine   
  If CurrentLine <>"" then
    Msg = Msg & CurrentLine & Chr(13)
  end if
Loop


' Close file 

Close #FileNo               
Msgbox Msg

Le singole righe sono richiamate in un ciclo Do While, salvate nella variabile Msg e visualizzate nella parte finale di una finestra di messaggio.

Content on this page is licensed under the Public Documentation License (PDL).


Personal tools