Conoscere la dimensione di un file

Da Gambas-it.org - Wikipedia.

Per conoscere la dimensione di un file, si potranno adottare almeno cinque modalità.


Uso della funzione Lof()

La funzone Lof() restituisce proprio la lunghezza in byte di un file:

Public Sub Main()

 Dim fl As File
 
  fl = Open "/percorso/del/file" For Read
 
  Print "La dimensione del file è: "; Lof(fl); " byte"

  fl.Close

End


Uso della proprietà .Size della Classe Stat

La Classe Stat restituisce una serie di informazioni relative ai file.

Un esempio può essere il seguente:

Public Sub Button1_Click()

 Dim s As String

   s = Stat("/percorso/del/file").Size

   Print "La dimensione del file è: "; s; " byte"

End


Uso della funzione Len()

Useremo la funzione Len() per conoscere la lunghezza della stringa di dati restituita dalla funzione .Load della Classe File:

Public Sub Button1_Click()

 Dim s As String

   s = File.Load("/percorso/del/file")

   Print "La dimensione del file è: "; Len(s); " byte"

End


Uso della funzione Seek

Potremo usare anche leggere la quantità di dati contenuti in un file con la funzione Seek, come ad esempio:

Public Sub Main()

 Dim fl As File
 Dim i As Integer

  fl = Open "/percorso/del/file" For Read

  While Not Eof(fl)
    inc i
    Seek #fl, i
  Wend
 
  Print "La dimensione del file è: "; i; " byte"

  fl.Close

End


Uso della proprietà .Count di un vettore

Potremo usare anche la proprietà .Count di un vettore per conoscere - dopo l'intera lettura di un file - la dimensione del file medesimo, come ad esempio:

Public Sub Main()

 Dim fl As File
 Dim bb as New Byte[]
 Dim b As Byte
 
  fl = Open "/percorso/del/file" For Read

  While Not Eof(fl)
    Read #fl, b
    bb.Add(b)
  Wend
 
  Print "La dimensione del file è: "; bb.Count; " byte"

  fl.Close

End

o anche così usando il metodo Read() della variabile vettoriale di tipo Byte[]:

Public Sub Main()

 Dim fl As File
 Dim bb as Byte[]
  
  fl = Open "/percorso/del/file"

  With bb = New Byte[Lof(fl)]
    .Read(fl)
  End With
 
  Print "La dimensione del file è: "; bb.Count; " byte"

  fl.Close

End


Uso della funzione esterna Stat di C

Si potrà, volendo, utilizzare anche la funzione esterna stat() di C con le modalità indicate in questa pagina della Wiki.


Uso di alcune funzioni della libreria stdio.h di C

Si potranno, volendo, utilizzare anche alcune funzioni esterne della libreria stdio.h di C, come segue:

Library "libc:6"

Private Const SEEK_END As Integer = 2

' FILE *fopen(const char *path, const char *mode)
Private Extern fopen(path As String, mode As String) As Pointer

' int fseek(FILE *stream, long offset, int whence)
Private Extern fseek(fs As Pointer, offset As Long, whence As Integer) As Integer

' long ftell(FILE *stream)
Private Extern ftell(fs As Pointer) As Long

' int fclose(FILE *stream)
Private Extern fclose(fs As Pointer) As Integer


Public Sub Main()

 Dim fl As Pointer
 Dim l As Long

  fl = fopen("/percorso/del/file", "rb")
   
' Determina la dimensione del file:
  fseek(fl, 0, SEEK_END)
  l = ftell(fl)
  
  Print "Numero di byte nel file: "; l
   
  fclose(fl)

End