>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help User

# bigfiles: big file utilities

Use Windows API for common file access verbs. These handle files (and drives) with sizes greater than 2^31 bytes.

They represent 64 bit integers as 2 element integer vectors.

Indexed read and write have an optional flag indicating the use of the index. If the flag is non-negative, the index is from the start of the file. If the flag is negative, the index is from the end of the file.

f can be either a text file name or a file handle (from bopen).

        bytes written=.data bappend f                           append to end
        data=.bixread f;start0,start1[,len[,dirflag]]           indexed read
        bytes written=.data bixwrite f;start0,start1[,dirflag]  indexed write
        free space=.bdiskfreespaceex dir                        get disk free space
        free space=.bdiskfreespace drive root                   get disk free space (device units)
        size=.bfsize f                                          get file size
        fh=.[mode] bopen filename                               open file input or inout
        success=.bclose fh                                      close open file
        sys_drives=.getdrives ''                                return vector of windows drive letters
        sys_drive_free_space=.getdrivespace ''                  return matrix of drive letters
        are_same=.f1 bfcomp f2                                  compare 2 files

Contributed by David Mitchell in J Forum posting April 2003.

Name | Type | Description
bappend | verb | append to end
bclose | verb | close open file handle
bdiskfreespace | verb | return disk free space
bdiskfreespaceex | verb | return extended disk free space
bfcomp | verb | compare 2 big files
bfsize | verb | return size of file
bixread | verb | indexed read
bixwrite | verb | indexed write
bopen | verb | open file read or readwrite
getdrives | verb | get system drive letters
getdrivespace | verb | get system drive letters and free space

bappend

    append to end
    form: data bappend f

bclose

    close open file handle
    form: bclose fh
    returns 1 if successful, 0 if not

bdiskfreespace

    return disk free space
    form: bdiskfreespace drive root (must be similar to 'c:\')
    returns 4 elements: SectorsPerCluster,BytesPerSector,NumberOfFreeClusters,TotalNumberOfClusters

bdiskfreespaceex

    return extended disk free space
    form: [flag] bdiskfreespaceex dir
    if flag=0 returns 3x2 matrix of integers, representing 3 64 bit values.
    if flag=1 returns 3 element vector of floats, representing 64 bit values.
    FreeBytesAvailable,TotalNumberOfBytes,TotalNumberOfFreeBytes
    See MS SDK for more information.

bfcomp

    compare 2 big files
    form: f1 bfcomp f2
    returns 0 if different 1 if same

bfsize

    return size of file
    form: bfsize f
    returns 2 integer vector

bixread

    indexed read
    form: bixread f;start0,start1[,len[,dirflag]]

bixwrite

    indexed write
    form: data bixwrite f;start0,start1[,dirflag]
    returns bytes written

bopen

    open file read or readwrite
    form: [mode] bopen filename
    returns file handle
    mode is 0 for read, 1 for readwrite, default read

getdrives

    get system drive letters
    form: getdrives ''
    returns drive letter vector if successful, error if not

getdrivespace

    get system drive letters and free space
    form: getdrivespace ''
    returns nx2 drive letter, space available if successful, '' if not

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help User