Windows directories not recognized by ruby?

Discussion in 'Ruby' started by Kalman H., Apr 7, 2011.

  1. Kalman H.

    Kalman H. Guest

    What's wrong with this code?

    C:\>mkdir test_ruby

    C:\>irb
    irb(main):001:0> File.directory? "c:"
    => true
    irb(main):002:0> File.directory? "c:\test_ruby"
    => false
    irb(main):003:0>

    Thanks for any ideas in advance,

    -Kalman

    --
    Posted via http://www.ruby-forum.com/.
     
    Kalman H., Apr 7, 2011
    #1
    1. Advertising

  2. On Thu, Apr 7, 2011 at 16:03, Kalman H. <> wrote:

    > irb(main):002:0> File.directory? "c:\test_ruby"


    You may want to escape your reverse solidus (backslash), or, better
    yet, use a solidus (slash, virgule) instead.
     
    Nikolai Weibull, Apr 7, 2011
    #2
    1. Advertising

  3. Kalman H.

    paul h Guest

    On Apr 7, 3:03 pm, "Kalman H." <> wrote:
    > What's wrong with this code?
    >
    > C:\>mkdir test_ruby
    >
    > C:\>irb
    > irb(main):001:0> File.directory? "c:"
    > => true
    > irb(main):002:0> File.directory? "c:\test_ruby"
    > => false
    > irb(main):003:0>
    >
    > Thanks for any ideas in advance,
    >
    > -Kalman
    >
    > --
    > Posted viahttp://www.ruby-forum.com/.


    It's the way Ruby handles your strings. You are using double quotes,
    so you need to escape the backslash. If you use single quotes, you can
    use the single backslash. Look at the following:

    irb(main):001:0> File.directory? "C:"
    => true
    irb(main):002:0> File.directory? "C:\Users"
    => false
    irb(main):003:0> File.directory? "C:\\Users"
    => true
    irb(main):004:0> File.directory? 'C:\Users'
    => true

    HTH

    Paul
     
    paul h, Apr 7, 2011
    #3
  4. On Thu, Apr 7, 2011 at 4:03 PM, Kalman H. <> wrote:
    > What's wrong with this code?
    >
    > C:\>mkdir test_ruby
    >
    > C:\>irb
    > irb(main):001:0> File.directory? "c:"
    > => true
    > irb(main):002:0> File.directory? "c:\test_ruby"
    > => false
    > irb(main):003:0>
    >


    The \ is an escape character, so you are actually checking for "c:
    est_ruby" (\t is is the escape sequence for a tab character)

    Either try

    File.directory? "c:\\test_ruby"

    or

    File.directory? "c:/test_ruby"

    Windows NT *at least* since Vista, but probably XP already, and maybe
    even the original NT 3.51, support the forward slash in the command
    line.

    --
    Phillip Gawlowski

    Though the folk I have met,
    (Ah, how soon!) they forget
    When I've moved on to some other place,
    There may be one or two,
    When I've played and passed through,
    Who'll remember my song or my face.
     
    Phillip Gawlowski, Apr 7, 2011
    #4
  5. > Windows NT *at least* since Vista, but probably XP already, and maybe
    > even the original NT 3.51, support the forward slash in the command
    > line.


    ForwardSlash works since MSDOS !

    From wikipedia "Backslash" :

    "The Windows API can accept either the backslash or slash to separate
    directory and file components of a path, but the Microsoft convention is
    to use a backslash, and APIs that return paths put backslash in.[7]
    MS-DOS 2.0 copied the hierarchical file system from Unix and thus used
    the forward slash, but (possibly on the insistence of IBM) added the
    backslash to allow paths to be typed into the command shell while
    retaining compatibility with MS-DOS 1.0 and CP/M where the slash was the
    command-line option indicator (i.e. as in typing "dir/w" to give the
    "wide" option to the "dir" command).[8] Although the command shell was
    the only part of MS-DOS that required this, the use of backslash in
    filenames was propagated to most other parts of the user interface"

    --
    Posted via http://www.ruby-forum.com/.
     
    Regis d'Aubarede, Apr 7, 2011
    #5
  6. Kalman H.

    koulikoff Guest

    On Apr 7, 6:03 pm, "Kalman H." <> wrote:
    > What's wrong with this code?
    >
    > C:\>mkdir test_ruby
    >
    > C:\>irb
    > irb(main):001:0> File.directory? "c:"
    > => true
    > irb(main):002:0> File.directory? "c:\test_ruby"
    > => false
    > irb(main):003:0>
    >
    > Thanks for any ideas in advance,
    >
    > -Kalman
    >
    > --
    > Posted viahttp://www.ruby-forum.com/.


    You should use File.directory? File.join(%w[c: test_ruby])
     
    koulikoff, Apr 7, 2011
    #6
    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. Joel Finkel
    Replies:
    0
    Views:
    510
    Joel Finkel
    Sep 12, 2003
  2. Jeffry van de Vuurst
    Replies:
    2
    Views:
    551
    Jeffry van de Vuurst
    Jul 30, 2003
  3. =?Utf-8?B?TGFzc2UgTmlsc3Nvbg==?=

    Multiple bin-directories with virtual directories?

    =?Utf-8?B?TGFzc2UgTmlsc3Nvbg==?=, Nov 9, 2004, in forum: ASP .Net
    Replies:
    0
    Views:
    840
    =?Utf-8?B?TGFzc2UgTmlsc3Nvbg==?=
    Nov 9, 2004
  4. Bert Ameche
    Replies:
    8
    Views:
    148
    Pawel Zielniok
    Apr 19, 2009
  5. Noah Coad
    Replies:
    1
    Views:
    229
    Chris Angelico
    Oct 17, 2012
Loading...

Share This Page