File.size? incorrect for big files?

Discussion in 'Ruby' started by Nation, Carey, Mar 13, 2008.

  1. Hi,

    I've written a script to monitor some files stored on our network. The
    files range from a few hundred MB to 20-50g. Above a certain point
    which I haven't really narrowed down yet, the file sizes start being
    reported incorrectly from my script. It's as if the routine that does
    the system query is using a 32 bit thing for the size and it's getting
    truncated as integers do. Some files actually come back with a negative
    size. The data type that ruby is using is perfectly capable of holding
    the size of the files. I've tried File.size? and FileUtils.size?, so
    I'm somewhat at a loss short of writing an extension. Any ideas?

    =20

    The script is running on windows, querying the files via UNC paths
    through a samba share on linux.

    =20

    Thanks!

    =20

    ________________________________

    Carey Nation <mailto:> =20

    Lead Software Engineer

    CNN BEST

    Broadcast Production Systems

    Video Solutions Group

    (404)827-2935 (wk)

    (404)824-0033 (cell)

    ________________________________

    =20
     
    Nation, Carey, Mar 13, 2008
    #1
    1. Advertising

  2. Nation, Carey

    Fred Talpiot Guest

    Some versions, maybe all, of the windows libraries have a bug in
    File.size.
    Make sure you have the latest win32 gems, it seems to help.

    The 'gem outdated' and 'gem update' commands can help.

    The only bug I've seen is on moderately sized files where the ruby code
    closes the file then immediately checks the file size. It came back as
    zero. I worked around it several versions ago, so my info is not as of
    today.


    --
    Posted via http://www.ruby-forum.com/.
     
    Fred Talpiot, Mar 13, 2008
    #2
    1. Advertising

  3. On Mar 13, 12:59=A0pm, "Nation, Carey" <> wrote:
    > Hi,
    >
    > I've written a script to monitor some files stored on our network. =A0The
    > files range from a few hundred MB to 20-50g. =A0Above a certain point
    > which I haven't really narrowed down yet, the file sizes start being
    > reported incorrectly from my script. =A0It's as if the routine that does
    > the system query is using a 32 bit thing for the size and it's getting
    > truncated as integers do. Some files actually come back with a negative
    > size. =A0The data type that ruby is using is perfectly capable of holding
    > the size of the files. =A0I've tried File.size? and FileUtils.size?, so
    > I'm somewhat at a loss short of writing an extension. Any ideas?
    >
    > The script is running on windows, querying the files via UNC paths
    > through a samba share on linux.


    It's a bug in Ruby.

    The win32-file library fixes it.

    require 'win32/file' # Do this first
    File.size(some_big_file)

    Regards,

    Dan
     
    Daniel Berger, Mar 13, 2008
    #3
  4. Hi,

    At Fri, 14 Mar 2008 03:59:30 +0900,
    Nation, Carey wrote in [ruby-talk:294466]:
    > The script is running on windows, querying the files via UNC paths
    > through a samba share on linux.


    Microsoft Visual C's runtime doesn't support large files, so
    ruby compiled with it also doesn't. Ruby 1.9 replaces some
    functions to fix it.

    --
    Nobu Nakada
     
    Nobuyoshi Nakada, Mar 14, 2008
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Shaguf
    Replies:
    0
    Views:
    524
    Shaguf
    Dec 24, 2008
  2. Shaguf
    Replies:
    0
    Views:
    481
    Shaguf
    Dec 26, 2008
  3. Keith Thompson

    Re: File Size - Big File Size

    Keith Thompson, Oct 1, 2009, in forum: C Programming
    Replies:
    6
    Views:
    300
    Phil Carmody
    Oct 3, 2009
  4. Shaguf
    Replies:
    0
    Views:
    259
    Shaguf
    Dec 26, 2008
  5. Shaguf
    Replies:
    0
    Views:
    236
    Shaguf
    Dec 24, 2008
Loading...

Share This Page