From: Paul Duncan Date: 2002-07-31T06:45:12+09:00 Subject: Re: File.new : having problems in windows * Khurram (khabibiuf@hotmail.com) wrote: > Hi all, > > I'm a relatively new user to ruby. I was trying to use the File.new > and was using a directory path as well. It seems like ruby wants to > replace the \ (backslash) for the directory paths with a double > backslash \\. > > How can I get around this or fix this problem? You should either use single quotes to store filenames (so the backslashes aren't interpreted by ruby), or use forward slashes as your path delimiter (if I remmeber correctly, that also works correctly in Windows). So, instead of directory = "\\blah\\test.txt" Use single quotes: directory = '\blah\test.txt' or forward slashes directory '/blah/test.txt' > ------------------------------------------------------ > directory = "\\blah\\test.txt" > printf ("This is string stores %s \n\n",directory) > d = File.new(directory,"w+") > > Output: > > This is string stores \blah\test.txt > > parser.rb:20:in `initialize': No such file or directory - > "\\blah\\test.txt" > NOENT) > from parser.rb:20:in `new' > from parser.rb:20 > > > > ----------------------------- > > It looks like the directory name is stored correctly but the file.new > function tries to add an extra \ into the directory names. It's not adding an extra backslash; the error handing is calling inspect on the string, which escapes it. For example: irb(main):003:0> puts "\\asdf".inspect, '\asdf'.inspect "\\asdf" "\\asdf" The problem you're having is exactly what the error message says: there is no file or directory called '\blah\test.txt'. I have no experience running ruby under Windows, but my best guess would be to try either '\c\blah\test.txt' or '/c/blah/test.txt'. > Thanks, > > - Khurram -- Paul Duncan pabs in #gah (OPN IRC) http://www.pablotron.org/ OpenPGP Key ID: 0x82C29562