Returns an array containing all of the filenames in the given directory. Will raise a SystemCallError
if the named directory doesn’t exist.
The optional encoding keyword argument specifies the encoding of the directory. If not specified, the filesystem encoding is used.
Dir.entries("testdir") #=> [".", "..", "config.h", "main.rb"]
Returns the file descriptor used in dir.
d = Dir.new("..") d.fileno #=> 8
This method uses dirfd() function defined by POSIX 2008. NotImplementedError
is raised on other platforms, such as Windows, which doesn’t provide the function.
Return a string describing this Dir
object.
Reads the next entry from dir and returns it as a string. Returns nil
at the end of the stream.
d = Dir.new("testdir") d.read #=> "." d.read #=> ".." d.read #=> "config.h"
Repositions dir to the first entry.
d = Dir.new("testdir") d.read #=> "." d.rewind #=> #<Dir:0x401b3fb0> d.read #=> "."
Returns the current position in dir. See also Dir#seek
.
d = Dir.new("testdir") d.tell #=> 0 d.read #=> "." d.tell #=> 12
Seeks to a particular location in dir. integer must be a value returned by Dir#tell
.
d = Dir.new("testdir") #=> #<Dir:0x401b3c40> d.read #=> "." i = d.tell #=> 12 d.read #=> ".." d.seek(i) #=> #<Dir:0x401b3c40> d.read #=> ".."
Returns the current position in dir. See also Dir#seek
.
d = Dir.new("testdir") d.tell #=> 0 d.read #=> "." d.tell #=> 12
Synonym for Dir#seek
, but returns the position parameter.
d = Dir.new("testdir") #=> #<Dir:0x401b3c40> d.read #=> "." i = d.pos #=> 12 d.read #=> ".." d.pos = i #=> 12 d.read #=> ".."
Closes the directory stream. Calling this method on closed Dir
object is ignored since Ruby 2.3.
d = Dir.new("testdir") d.close #=> nil
Returns the path to the current working directory of this process as a string.
Dir.chdir("/tmp") #=> 0 Dir.getwd #=> "/tmp" Dir.pwd #=> "/tmp"
Returns the path to the current working directory of this process as a string.
Dir.chdir("/tmp") #=> 0 Dir.getwd #=> "/tmp" Dir.pwd #=> "/tmp"
Deletes the named directory. Raises a subclass of SystemCallError
if the directory isn’t empty.
Deletes the named directory. Raises a subclass of SystemCallError
if the directory isn’t empty.
Returns the home directory of the current user or the named user if given.
Returns true
if the named file is a directory, false
otherwise.
Returns true
if the named file is an empty directory, false
if it is not a directory or non-empty.
Dir.open( string ) -> aDir Dir.open( string, encoding: enc ) -> aDir Dir.open( string ) {| aDir | block } -> anObject Dir.open( string, encoding: enc ) {| aDir | block } -> anObject
The optional encoding keyword argument specifies the encoding of the directory. If not specified, the filesystem encoding is used.
With no block, open
is a synonym for Dir::new
. If a block is present, it is passed aDir as a parameter. The directory is closed at the end of the block, and Dir::open
returns the value of the block.
Dir.new( string ) -> aDir Dir.new( string, encoding: enc ) -> aDir
Returns a new directory object for the named directory.
The optional encoding keyword argument specifies the encoding of the directory. If not specified, the filesystem encoding is used.
Dir[ string [, string ...] [, base: path] [, sort: true] ] -> array
Equivalent to calling Dir.glob([
string,…], 0)
.
Dir.glob( pattern, [flags], [base: path] [, sort: true] ) -> array Dir.glob( pattern, [flags], [base: path] [, sort: true] ) { |filename| block } -> nil
Expands pattern
, which is a pattern string or an Array
of pattern strings, and returns an array containing the matching filenames. If a block is given, calls the block once for each matching filename, passing the filename as a parameter to the block.
The optional base
keyword argument specifies the base directory for interpreting relative pathnames instead of the current working directory. As the results are not prefixed with the base directory name in this case, you will need to prepend the base directory name if you want real paths.
The results which matched single wildcard or character set are sorted in binary ascending order, unless false is given as the optional sort
keyword argument. The order of an Array
of pattern strings and braces are preserved.
Note that the pattern is not a regexp, it’s closer to a shell glob. See File::fnmatch
for the meaning of the flags
parameter. Case sensitivity depends on your system (File::FNM_CASEFOLD is ignored).
*
Matches any file. Can be restricted by other values in the glob. Equivalent to / .* /mx
in regexp.
*
Matches all files
c*
Matches all files beginning with c
*c
Matches all files ending with c
*c*
Match all files that have c
in them (including at the beginning or end).
Note, this will not match Unix-like hidden files (dotfiles). In order to include those in the match results, you must use the File::FNM_DOTMATCH flag or something like "{*,.*}"
.
**
Matches directories recursively if followed by /
. If this path segment contains any other characters, it is the same as the usual *
.
?
Matches any one character. Equivalent to /.{1}/
in regexp.
[set]
Matches any one character in set
. Behaves exactly like character sets in Regexp
, including set negation ([^a-z]
).
{p,q}
Matches either literal p
or literal q
. Equivalent to pattern alternation in regexp.
Matching literals may be more than one character in length. More than two literals may be specified.
\
Escapes the next metacharacter.
Note that this means you cannot use backslash on windows as part of a glob, i.e. Dir["c:\foo*"]
will not work, use Dir["c:/foo*"]
instead.
Examples:
Dir["config.?"] #=> ["config.h"] Dir.glob("config.?") #=> ["config.h"] Dir.glob("*.[a-z][a-z]") #=> ["main.rb"] Dir.glob("*.[^r]*") #=> ["config.h"] Dir.glob("*.{rb,h}") #=> ["main.rb", "config.h"] Dir.glob("*") #=> ["config.h", "main.rb"] Dir.glob("*", File::FNM_DOTMATCH) #=> [".", "..", "config.h", "main.rb"] Dir.glob(["*.rb", "*.h"]) #=> ["main.rb", "config.h"] Dir.glob("**/*.rb") #=> ["main.rb", # "lib/song.rb", # "lib/song/karaoke.rb"] Dir.glob("**/*.rb", base: "lib") #=> ["song.rb", # "song/karaoke.rb"] Dir.glob("**/lib") #=> ["lib"] Dir.glob("**/lib/**/*.rb") #=> ["lib/song.rb", # "lib/song/karaoke.rb"] Dir.glob("**/lib/*.rb") #=> ["lib/song.rb"]
Return the target directory where the gem is to be installed. This directory is not guaranteed to be populated.