Simply open a file using a variable

Hi,

i´m totally new to ruby and have a tiny little problem.

I´d like to open a file located in a specific directory on a specific
drive with spaces in the path (Vista).

Example:
“f:\abc def\new\this is my file.txt”

This seems to work fine:
File.open(“f:\abc def\new\this is my file.txt”)

But in case i want to use a variable to do this like:
path = “f:\abc def\new\this is my file.txt”
File.open(path)

I always get this error:
G:/ruby/scripts/test.rb:35:in initialize': Invalid argument - "f:\abc def\new\this is my file.txt" (Errno::EINVAL) from G:/mp3val-0.1.8_with_frontend-0.1.1-bin-win32/test.rb:35:inopen’
from G:/mp3val-0.1.8_with_frontend-0.1.1-bin-win32/test.rb:35:in
`’

What do i do wrong or what do i need to add to make this working?

Thanks
Dox

On Sat, Sep 11, 2010 at 4:42 PM, Dox X. [email protected] wrote:

This seems to work fine:
open' from G:/mp3val-0.1.8_with_frontend-0.1.1-bin-win32/test.rb:35:in

What do i do wrong or what do i need to add to make this working?

I can’t test it now in Windows but I seem to recall that you can use
forward slashes even in Windows:

path = “f:/abc/def/new/this is my file.txt”

Can you try that?

Jesus.

Jesús Gabriel y Galán wrote:

On Sat, Sep 11, 2010 at 4:42 PM, Dox X. [email protected] wrote:

This seems to work fine:
open' � � � �from G:/mp3val-0.1.8_with_frontend-0.1.1-bin-win32/test.rb:35:in

What do i do wrong or what do i need to add to make this working?

I can’t test it now in Windows but I seem to recall that you can use
forward slashes even in Windows:

path = “f:/abc/def/new/this is my file.txt”

Can you try that?

Jesus.

Hi Jesus and thanks for answering.

i tried this, but the result is the same. Only the slashes in the error
message are now different accordingly to the changed path variable.

I already tried a lot of different options like changing the slashed,
adding additionally escaping "" for each slash and for the blanks as
well, but the result is always the same.

I can open the file when i enter the path directly (also with
""-slashes), but using a variable in between leeds to this error.

btw: i made a smaller mistake while posting my example. The filename is
“p1 - this is my file.txt”. I don’t know, if the “-” is also a special
character, so i escaped this one as well…no luck.

Hi Jesus and thanks for answering.

i tried this, but the result is the same. Only the slashes in the error
message are now different accordingly to the changed path variable.

I already tried a lot of different options like changing the slashed,
adding additionally escaping “” for each slash and for the blanks as
well, but the result is always the same.

I can open the file when i enter the path directly (also with
“”-slashes), but using a variable in between leeds to this error.

btw: i made a smaller mistake while posting my example. The filename is
“p1 - this is my file.txt”. I don’t know, if the “-” is also a special
character, so i escaped this one as well…no luck.

Ok, got it. This is slightly confusing. I hope, the rest of Ruby makes
more sense.

This works:
file = File.open(“G:\abc Test\test - Doc.txt”)

and

s = “G:\abc\ Test\test - Doc.txt”
File.open(s)

In case a variable should be used, the space in the name of the
directory must be escaped. The one in the filename is not important.
Strange strange…