Difference between revisions of "EN/Documentation/BASIC Guide/Files and Directories (Runtime Library)"
(New page: {{DISPLAYTITLE:ファイルおよびディレクトリ ({{OOo}} 実行時ライブラリ)}} {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentat...) |
|||
Line 1: | Line 1: | ||
− | {{DISPLAYTITLE: | + | {{DISPLAYTITLE: File e directory ({{OOo}} Libreria runtime)}} |
{{EN/Documentation/BASICGuideTOC/v2 | {{EN/Documentation/BASICGuideTOC/v2 | ||
|ShowPrevNext=block | |ShowPrevNext=block | ||
Line 8: | Line 8: | ||
}} | }} | ||
− | + | L'utilizzo dei file rappresenta una delle attività di base di un'applicazione. L'API di {{OOo}} fornisce un'intera gamma di oggetti con cui potete creare, aprire e modificare i | |
+ | documenti Office. Questi oggetti sono presentati nel capitolo [[Documentation/BASIC Guide/API Intro|Introduzione all'API di {{OOo}}]]. In ogni caso, talvolta occorre accedere direttamente al file system, eseguire ricerche nelle directory o modificare i file di testo. La libreria runtime di {{OOo}} Basic mette a vostra disposizione numerose funzioni fondamentali per queste attività. | ||
− | {{Documentation/Note| | + | {{Documentation/Note|Alcune funzioni di file e directory specifiche DOS non sono più incluse in {{OOo}} o la loro funzionalità è limitata. Ad esempio, non è contemplato il supporto delle funzioni <tt>ChDir</tt>, <tt>ChDrive</tt> e <tt>CurDir</tt>. 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 {{OOo}}.}} |
− | == | + | == Amministrazione dei file == |
− | === | + | === Ricerca nelle directory === |
− | <tt>Dir</tt> | + | La funzione <tt>Dir</tt> in {{OOo}} Basic esegue la ricerca di file e sottodirectory nelle directory. Alla prima richiesta, deve essere assegnata a <tt>Dir</tt> come suo primo parametro una stringa contenente il percorso delle directory in cui eseguire la ricerca. Il secondo parametro di <tt>Dir</tt> specifica il file o la directory da cercare. {{OOo}} Basic restituisce il nome della prima voce di directory individuata. Per richiamare la voce successiva, la funzione <tt>Dir</tt> dovrebbe essere richiesta senza parametri. Se la funzione <tt>Dir</tt> non individua più voci, restituisce una stringa vuota. |
− | + | L'esempio seguente mostra come utilizzare la funzione <tt>Dir</tt> per richiedere tutti i file situati in una directory. La procedura salva i singoli nomi di file nella variabile <tt>AllFiles</tt> e quindi la visualizza in una finestra di messaggio. | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 37: | Line 38: | ||
</source> | </source> | ||
− | <tt>0</tt> | + | Lo <tt>0</tt> (zero) utilizzato come secondo parametro nella funzione <tt>Dir</tt> assicura che <tt>Dir</tt> restituisca solo i nomi dei file e che le directory siano ignorate. I parametri seguenti possono essere specificati qui: |
− | * <tt>0</tt>: | + | * <tt>0</tt> :Restituisce i file normali |
− | * <tt>16</tt>: | + | * <tt>16</tt> :Sottodirectory |
− | + | L'esempio seguente è praticamente identico a quello precedente, ma la funzione <tt>Dir</tt> trasferisce il valore 16 come parametro, che restituisce le sottodirectory di una cartella anziché i nomi dei file. | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 61: | Line 62: | ||
</source> | </source> | ||
− | {{Documentation/Note|{{OOo}} Basic | + | {{Documentation/Note|Quando richiesto in {{OOo}} Basic, la funzione <tt>Dir</tt> 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 <tt>CompatibilityMode ( true )</tt>, {{OOo}} Basic si comporta come VBA e la funzione Dir, usando il parametro 16, restituisce le sottodirectory e i file standard.}} |
− | {{Documentation/Note|VBA | + | {{Documentation/Note|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 {{OOo}} Basic perché le funzioni di file system corrispondenti non sono disponibili in tutti i sistemi operativi.}} |
− | {{Documentation/Note|<tt>Dir</tt> | + | {{Documentation/Note|Le specifiche di percorso elencate in <tt>Dir</tt> possono utilizzare i segnaposto * e ? sia in VBA che in {{OOo}} Basic. In {{OOo}} 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 === |
− | {{OOo}} Basic | + | {{OOo}} Basic dispone della funzione <tt>MkDir</tt> per la creazione di directory. |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 75: | Line 76: | ||
</source> | </source> | ||
− | + | 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 <tt>C:\SubDir1</tt>, la chiamata | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 81: | Line 82: | ||
</source> | </source> | ||
− | + | crea sia la directory <tt>C:\SubDir1\SubDir2</tt> che la directory <tt>C:\SubDir1\SubDir2\SubDir3</tt>. | |
− | + | La funzione <tt>RmDir</tt> consente di eliminare le directory. | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 89: | Line 90: | ||
</source> | </source> | ||
− | + | Qualora la directory contenga sottodirectory o file, verranno '''eliminati anch'essi.''' Si | |
+ | consiglia pertanto di utilizzare <tt>RmDir</tt> con cautela. | ||
− | {{Documentation/Note|VBA | + | {{Documentation/Note|In VBA, le funzioni <tt>MkDir</tt> e <tt>RmDir</tt> sono relative alla sola directory corrente. In {{OOo}} Basic, <tt>MkDir</tt> e <tt>RmDir</tt> si possono invece utilizzare per creare o eliminare livelli di directory.}} |
− | {{Documentation/Note|VBA | + | {{Documentation/Note|In VBA, <tt>RmDir</tt> produce un messaggio di errore se una directory contiene un file. In {{OOo}} Basic, vengono eliminati la directory '''e tutti i suoi file'''. Se si utilizza la funzione <tt>CompatibilityMode ( true )</tt>, {{OOo}} Basic si comporta come VBA.}} |
− | === | + | === Copia, ridenominazione, eliminazione e controllo dell'esistenza dei file === |
− | + | La chiamata seguente crea una copia del file <tt>Source</tt> sotto il nome di <tt>Destination</tt>: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 103: | Line 105: | ||
</source> | </source> | ||
− | + | Con l'ausilio della seguente funzione è possibile rinominare il file <tt>OldName</tt> in <tt>NewName</tt>. La sintassi della parola chiave <tt>As</tt> e il fatto che non è utilizzata una virgola risalgono alle radici del linguaggio | |
+ | Basic. | ||
<source lang="oobas"> | <source lang="oobas"> | ||
Line 109: | Line 112: | ||
</source> | </source> | ||
− | + | La chiamata seguente elimina il file <tt>Filename</tt>. Per eliminare le directory (e i relativi file) avvalersi della funzione <tt>RmDir</tt>. | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 115: | Line 118: | ||
</source> | </source> | ||
− | + | La funzione <tt>FileExists</tt> può essere utilizzata per controllare se esiste un file: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 123: | Line 126: | ||
</source> | </source> | ||
− | === | + | === 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. | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 134: | Line 137: | ||
</source> | </source> | ||
− | + | Il valore restituito è fornito come maschera di bit in cui sono possibili i valori seguenti: | |
− | * 1 : | + | * 1 : file di sola lettura |
− | * 16 : | + | * 16 : nome di una directory |
− | + | L'esempio seguente determina la maschera di bit del file <tt>test.txt</tt> e controlla se è di sola lettura e se si tratta di una directory. Se nessuna delle due è applicabile, a <tt>FileDescription</tt> è assegnata la stringa "normale". | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 162: | Line 165: | ||
</source> | </source> | ||
− | {{Documentation/Note|VBA | + | {{Documentation/Note|I flag utilizzati in VBA per ricercare le proprietà '''concealed''', '''system file, archived''' e '''volume name''' dei file non sono supportati in {{OOo}} Basic in quanto specifici di Windows e non disponibili (o solo in parte) in altri ambienti operativi.}} |
− | + | La funzione <tt>SetAttr</tt> consente di modificare le proprietà di un file. La chiamata seguente | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 170: | Line 173: | ||
</source> | </source> | ||
− | + | Per eliminare uno stato di sola lettura preesistente, avvalersi della chiamata seguente: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 176: | Line 179: | ||
</source> | </source> | ||
− | + | La data e l'ora dell'ultima modifica operata su un file sono fornite dalla funzione <tt>FileDateTime</tt>. Qui la data è formattata in conformità alle impostazioni specifiche del paese utilizzate sul sistema. | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 182: | Line 185: | ||
</source> | </source> | ||
− | + | La funzione <tt>FileLen</tt> determina la lunghezza di un file in byte (come numero intero lungo). | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 188: | Line 191: | ||
</source> | </source> | ||
− | == | + | == Scrittura e lettura di file di testo == |
− | {{OOo}} Basic | + | {{OOo}} 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 <tt>FreeFile</tt>. Il descrittore di file è utilizzato come parametro per l'istruzione<tt>Open</tt> che apre il file. Per aprire un file in modo da specificarlo come file di testo, usare la chiamata <tt>Open</tt> seguente: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 202: | Line 205: | ||
</source> | </source> | ||
− | <tt>Filename</tt> | + | <tt>Filename</tt> è una stringa contenente il nome del file. <tt>FileNo</tt> è il descrittore creato dalla funzione <tt>FreeFile</tt>. |
− | + | Una volta aperto il file, l'istruzione <tt>Print</tt> può essere descritta riga per riga: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 210: | Line 213: | ||
</source> | </source> | ||
− | <tt>FileNo</tt> | + | <tt>FileNo</tt> 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 <tt>Close</tt>: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 218: | Line 221: | ||
</source> | </source> | ||
− | + | Anche qui dovrete specificare il gestore di file. | |
− | + | L'esempio seguente mostra come aprire, descrivere e chiudere un file di testo: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 236: | Line 239: | ||
</source> | </source> | ||
− | === | + | === Lettura di file di testo === |
− | + | La lettura dei file di testo avviene secondo le stesse modalità della scrittura. L'istruzione <tt>Open</tt> utilizzata per aprire il file contiene l'espressione <tt>For Input</tt> in luogo dell'espressione <tt>For Output</tt>. 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 <tt>eof</tt> per controllare se è stata raggiunta la fine del file: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 246: | Line 249: | ||
</source> | </source> | ||
− | + | L'esempio seguente illustra come eseguire la lettura di un file di testo: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 279: | Line 282: | ||
</source> | </source> | ||
− | + | Le singole righe sono richiamate in un ciclo <tt>Do While</tt>, salvato nella variabile <tt>Msg</tt> e visualizzate nella parte finale di una finestra di messaggio. | |
{{PDL1}} | {{PDL1}} | ||
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Files and Directories (Runtime Library)}} | {{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Files and Directories (Runtime Library)}} |
Revision as of 18:20, 25 June 2009
Template:EN/Documentation/BASICGuideTOC/v2
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à.
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
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.
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 "normale".
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
La funzione SetAttr consente di modificare le proprietà di un file. La chiamata seguente
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, salvato 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). |