Your error is most likely caused by the fact that Dir#entries returns
file names only, i.e. without a path. You are trying to open different
files than you think (most likely in the current directory).
Kind regards
robert
Many Thanks for replying robert, It makes sense what you have said.
I think it would be a lot easier if I just explain my end goal. I think my approach is probably wrong. This is what I want to achieve,
"Processing every single file that is in a particular directory"
My current approach is ,
1. Getting all files from a Directory using ab =Dir.open("K:/test/").entries
You should close the Dir object properly. You can either use the block
form of Dir.open or use the approach I have used below.
2. Iterating over each file that is in the directory by doing;
ab.each do |f|
3. Applying "File.open" method (with required permission) to every single 'file' by doing,
ab.each do |f|
File.Open(f,"w+") do |readfile|
4. Finally manipulating/processing each file line by line.
But what you said makes sense it looks like Dir.Open().entries doesn't return a "file object" that can be manipulated it rather returns a string (file name only).
Do you have any idea how this can be addressed?
There are different ways. You can create proper file names with the
tools you have already:
dir = "K:/test"
Dir.entries(dir).each do |file|
path = File.join dir, file
if File.file? path
File.open path do |io|
io.each_line do |line|
...
end
end
end
end
Or you can use the elegant Pathname library:
require 'pathname'
dir = Pathname "K:/test"
dir.entries.each do |file|
if file.file?
file.each_line do |line|
...
end
end
end
Sorry to be a pain... new to Ruby!
No need to worry. We all start out as beginners at some point in time.
Kind regards
robert
···
On 04.04.2010 18:25, Hawksury Gear wrote:
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/