Returns a free file number

declare function Freefile ( ) as long

result = Freefile

Return Value:
The next available file number, if any, otherwise zero (0).

Returns the number of the next free file number with valid values 1 to 255, or 0 if there are already 255 files opened. This value is a required argument to Open a file. Freefile is useful when opening files in complex programs where the programmer can't keep track of the used file numbers.

Make sure to always close files when no longer needed, otherwise you will get a file number leak, and won't be able to open any files anymore after 255 filenumbers are exhausted while your program is running.

Freefile will always return the smallest free file number. The file number returned by Freefile will not change until that file number is Opened, or until a smaller file number is Closed. For this reason, it is wise to use Freefile immediately before its corresponding Open, to ensure that the file number is not returned and opened elsewhere first.

' Create a string and fill it.
Dim buffer As String, f As Long
buffer = "Hello World within a file."

' Find the first free file number.
f = FreeFile

' Open the file "file.ext" for binary usage, using the file number "f".
Open "file.ext" For Binary As #f

' Place our string inside the file, using file number "f".
Put #f, , buffer

' Close the file.
Close #f

' End the program. (Check the file "file.ext" upon running to see the output.)

When using multiple Freefile statements, Freefile should be used immediately before the Open statement:
Dim As Long fr, fs
' The CORRECT way:
fr = FreeFile
Open "File1" For Input As #fr

fs = FreeFile
Open "File2" For Input As #fs

As opposed to:
Dim As Long fr, fs
' The WRONG way:
fr = FreeFile
fs = FreeFile '' fs has taken the same file number as fr

Open "file1" For Input As #fr
Open "file2" For Input As #fs '' error: file number already opened

Platform Differences:
Differences from QB:
See also:
Back to File I/O Functions