Large file support on Windows


#1

Is there any way to get large file support on windows (>2^31 bytes)? I
need File.size, IO#seek and IO#tell to work with large files on
Windows.


#2

Lars C. wrote:

Is there any way to get large file support on windows (>2^31 bytes)? I
need File.size, IO#seek and IO#tell to work with large files on
Windows.

If the filesystem is FAT32 then 4GB is the upper limit, no matter what
OS. ntfs has no limitation on filesize (other then the available
diskspace). Converting FAT32 to ntfs is simple, but there is no easy way
back.

hth,

Siep


#3

On Dec 3, 1:15 pm, Siep K. removed_email_address@domain.invalid wrote:

Lars C. wrote:

Is there any way to get large file support on windows (>2^31 bytes)? I
need File.size, IO#seek and IO#tell to work with large files on
Windows.

If the filesystem is FAT32 then 4GB is the upper limit, no matter what
OS. ntfs has no limitation on filesize (other then the available
diskspace). Converting FAT32 to ntfs is simple, but there is no easy way
back.

Thanks for your reply, but its been 5+ years since i have used
FAT32 ;-). Even on NTFS, I can’t access large files using the
mentioned functions.

The issue here is that Ruby relies directly on the ofs_t typedef which
is always 32 bit on Microsoft’s C runtime. 64-bit file-size support
requires a workaround (using for example fseeki64), but it is not that
straight forward due to the way the IO interface is made in Ruby (it
reliese on ofs_t everywhere).

I was just wondering if anyone had made an effort to make support for
large files in Ruby on Windows or any platform without the convinience
of a 64-bit ofs_t.


#4

On Dec 3, 4:54 am, Lars C. removed_email_address@domain.invalid wrote:

Is there any way to get large file support on windows (>2^31 bytes)? I
need File.size, IO#seek and IO#tell to work with large files on
Windows.

File.size will work as expected if you first “require ‘win32/file’” in
your code.

Regards,

Dan