From: Stefano Crocco Date: 2010-10-23T22:48:00+09:00 Subject: Re: Non-Hard Coded File.open(newFile) On Saturday 23 October 2010, Grant Curell wrote: > |Like a lot of people I'm new to Ruby and I'm trying to do something I > |thought would be pretty simple. I want the user to give me input in the > |form of a filename and then subsequently open the file. Here is what I > |have so far: > | > |class FileHandler > | > | def initialize() > | @fileToParse = fileToParse #I get user input in the form of gets in > | #another class. > | if File.new(fileToParse) > | puts 'File successfully opened.' > | else > | puts 'File failed to open.' > | Kernel.exit > | > | end > | end > |end > | > |However, that won't work. Doing something like > |File.new("C:/Users/grant/Desktop/test.txt") works just fine though. The > |way I'm currently doing it throws the following error: > | > |F:/Programming/eclipseWorkspace/CSE_655/file_handler.rb:8:in > |`initialize': Invalid argument - C:/Users/grant/Desktop/test.txt > |(Errno::EINVAL) Your code seems mostly correct, but I don't exactly understand what fileToParse is. Is it a call to a fileToParse method (which in turn uses geets to retrieve the file name) or a variable? In the first case, I guess the if line should be if File.new(@fileToParse) #note the @ Otherwise, the user will be asked to enter the file name twice. If fileToParse is a variable, instead, where does it come from? Also, it would be useful if you pointed out which is line 8 on your program. If I assume the first line is class FileHandler then line 8 is 'else', which I doubt could give you such an error. Stefano