Non-Hard Coded File.open(newFile)

G

Grant Curell

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)
 
H

Hassan Schroeder

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:
=A0def initialize()
=A0 =A0@fileToParse =3D fileToParse #I get user input in the form of gets= in
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 #another clas=
s.

Are you removing the newline at the end of the string from `gets` ?
F:/Programming/eclipseWorkspace/CSE_655/file_handler.rb:8:in
`initialize': Invalid argument - C:/Users/grant/Desktop/test.txt

Probably actually "C:/Users/grant/Desktop/test.txt\n" right here ^
(Errno::EINVAL)

HTH,
--=20
Hassan Schroeder ------------------------ (e-mail address removed)
twitter: @hassan
 
S

Stefano Crocco

|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
 
G

Grant Curell

Thank you so much Hassan, that fix seemed so obvious after you said it
lol. I just changed line 8 to if File.new(fileToParse.delete "\n") and
it worked just fine. Not sure if I should ask this here but just out of
curiosity does the debugger for 1.9.2 not work? I'm running the eclipse
plug in right now and whenever I try to debug it just vomits all over
itself. Browsed around the web and saw it mentioned a couple of times.
 
H

Hassan Schroeder

Thank you so much Hassan, that fix seemed so obvious after you said it
lol. I just changed line 8 to if File.new(fileToParse.delete "\n")

Good, but you should probably look at fileToParse.chomp for a more
platform-agnostic approach :)
Not sure if I should ask this here but just out of
curiosity does the debugger for 1.9.2 not work? I'm running the eclipse
plug in right now

Sorry, no idea about Eclipse.
 
W

w_a_x_man

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

Usually after gets you want to use strip to remove all leading
and trailing whitespace:

file_name = gets.strip
 

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

Forum statistics

Threads
473,997
Messages
2,570,239
Members
46,827
Latest member
DMUK_Beginner

Latest Threads

Top