I’m trying to make my own program that can help me manage my
files/folders faster than Windows command prompt but I have ran across a
problem.
The problem is if a user tries to open a folder while the program is in
“open text file” mode, it will close itself.
Code: http://pastebin.com/uFtpji0H
My question to you is, why is this File.readable not working against
folders? Is my code bad? Help me.
Dear Cynic Limbu,
You can test if the “filename” is a file with File::file?
Look at a modified version of your pastebin.
http://pastebin.com/NkUZt8kq
Abinoam Jr.
On Tue, Jan 28, 2014 at 2:50 PM, Robert K.
On Tue, Jan 28, 2014 at 7:37 PM, Abinoam Jr. [email protected] wrote:
Dear Cynic Limbu,
You can test if the “filename” is a file with File::file?
Generally Pathname comes handy in such situations because it supports
all the file operations and tests with a nicer syntax.
http://ruby-doc.org/stdlib-1.9.3/libdoc/pathname/rdoc/index.html
Kind regards
robert
I’d like to thank all of you for answering my question, it looks like
I’m still far away from being able to create my own programs because I’m
still a newbie in ruby.
why we can’t open a dir , and return a file list .
a=File.open(".")
a.each_line{|f| p open(f) }
On Tue, Jan 28, 2014 at 3:46 PM, cynic limbu [email protected]
wrote:
I’m trying to make my own program that can help me manage my
files/folders faster than Windows command prompt but I have ran across a
problem.
The problem is if a user tries to open a folder while the program is in
“open text file” mode, it will close itself.
What error are you seeing? Is it this one?
$ ruby -e ‘File.open("."){|io|io.each_line {|l| puts l}}’
-e:1:in each_line': Is a directory - . (Errno::EISDIR) from -e:1:in
block in ’
from -e:1:in open' from -e:1:in
’
You usually cannot open folders like files. That’s why there is
Dir.open():
http://www.ruby-doc.org/core-1.9.3/Dir.html#method-c-open
Code: http://pastebin.com/uFtpji0H
Btw. using string interpolation for strings is superfluous and
inefficient.
My question to you is, why is this File.readable not working against
folders? Is my code bad? Help me.
It is:
$ ruby -e ‘p File.readable?(".")’
true
File.readable checks permissions but File.open checks the type of
filesystem object. That’s not the same.
Cheers
robert
On Wed, Jan 29, 2014 at 8:06 AM, Kk Kk [email protected] wrote:
why we can’t open a dir , and return a file list .
a=File.open(".")
a.each_line{|f| p open(f) }
Because a directory does not consist of lines or arbitrary content. A
directory consists of data of a fixed structure. See also
http://linux.die.net/man/3/opendir
As I mentioned earlier, there is Dir.open
irb(main):004:0> system %w{touch /tmp/foo}
=> true
irb(main):005:0> Dir[’/tmp/’]
=> ["/tmp/foo"]
irb(main):006:0> Dir.open(’/tmp’) {|d| d.each {|e| p e}}
“.”
“…”
“foo”
=> #Dir:/tmp
Regards
robert