File.exist? behavior problem/question

R

Ryan Gifford

I am getting strange behavior running the following test case:

1. Create a file on filesystem (created D:/auz.dat)
2. Check to see if the created file exists by running
File.exist?("D:/auz.dat")
3. The code returns True
4. Run File.exist?("D:/aux.dat") (this file does not exists and should
return false)
5. It returns True.

The only file that should exist is auz.dat. Looking for auu.dat or other
variations do not consistently return false and looking for aux.dat
falsely returns true every time.

File.file? seems to act the same.

I am new to Ruby and am seeing this behavior in windows (one-click
install) on any version higher than 1.8.2. On 1.8.2 it behaves as I
think it should. I am currently using 1.8.5 and cannot recreate this
behavior in linux - it seems to be specific to the windows installs I
have tried it on.

So any feedback would be appreciated - it could just be something simple
I am doing wrong. Thanks in advance.

(small test I wrote for this)
# def FileExists
fileToTest = "D:/aux.dat"
puts 'Checking for file: ' + fileToTest
if File.exist?(fileToTest)
puts 'file is there'
else
puts 'file not found'
end
# end
 
T

Tim Hunter

Ryan said:
I am getting strange behavior running the following test case:

1. Create a file on filesystem (created D:/auz.dat)
2. Check to see if the created file exists by running
File.exist?("D:/auz.dat")
3. The code returns True
4. Run File.exist?("D:/aux.dat") (this file does not exists and should
return false)
5. It returns True.

The only file that should exist is auz.dat. Looking for auu.dat or other
variations do not consistently return false and looking for aux.dat
falsely returns true every time.

File.file? seems to act the same.

I am new to Ruby and am seeing this behavior in windows (one-click
install) on any version higher than 1.8.2. On 1.8.2 it behaves as I
think it should. I am currently using 1.8.5 and cannot recreate this
behavior in linux - it seems to be specific to the windows installs I
have tried it on.

So any feedback would be appreciated - it could just be something simple
I am doing wrong. Thanks in advance.

(small test I wrote for this)
# def FileExists
fileToTest = "D:/aux.dat"
puts 'Checking for file: ' + fileToTest
if File.exist?(fileToTest)
puts 'file is there'
else
puts 'file not found'
end
# end

Well, I was waiting for somebody more experienced with Windows to chime
in, but...

This is nothing to do with Ruby. "aux" is a reserved device name in
Windows. There are others: con, prn, nul, for example. These device
names look like filenames but they always exist and they exist in every
directory. Adding an extension doesn't change anything.

Googling aux+com+dos+windows will yield a bunch of info. Here's one good
hit I found:
http://blogs.msdn.com/oldnewthing/archive/2003/10/22/55388.aspx.
 
R

Ryan Gifford

Thanks for the info. This makes sense and it was just a fluke that I was
testing for aux etc. It looks like I'm good now.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,431
Messages
2,571,677
Members
48,796
Latest member
Greg L.

Latest Threads

Top