class Dir
Overview
Objects of class Dir
are directory streams representing directories in the underlying file system.
They provide a variety of ways to list directories and their contents.
The directory used in these examples contains the two regular files (config.h
and main.rb
),
the parent directory (..
), and the directory itself (.
).
See also: File
.
Included Modules
Defined in:
dir.crdir/glob.cr
Constructors
-
.new(path)
Returns a new directory object for the named directory.
-
.open(path) : self
Alias for
new(path)
Class Method Summary
-
.[](*patterns) : Array(String)
Returns an array of all files that match against any of patterns.
-
.[](patterns : Enumerable(String)) : Array(String)
Returns an array of all files that match against any of patterns.
-
.cd(path)
Changes the current working directory of the process to the given string.
-
.cd(path, &block)
Changes the current working directory of the process to the given string and invokes the block, restoring the original working directory when the block exits.
-
.children(dirname) : Array(String)
See
#children
. -
.current : String
Returns the current working directory.
-
.each(dirname, &block)
See
#each
. -
.each_child(dirname, &block)
See
#each_child
. -
.empty?(path) : Bool
Returns
true
if the directory at path is empty, otherwise returnsfalse
. -
.entries(dirname) : Array(String)
See
#entries
. -
.exists?(path) : Bool
Returns
true
if the given path exists and is a directory -
.glob(patterns : Enumerable(String), match_hidden = false, &block : String -> _)
Yields all files that match against any of patterns.
-
.glob(*patterns, match_hidden = false) : Array(String)
Returns an array of all files that match against any of patterns.
-
.glob(patterns : Enumerable(String), match_hidden = false) : Array(String)
Returns an array of all files that match against any of patterns.
-
.glob(*patterns, match_hidden = false, &block : String -> _)
Yields all files that match against any of patterns.
-
.mkdir(path, mode = 511)
Creates a new directory at the given path.
-
.mkdir_p(path, mode = 511)
Creates a new directory at the given path, including any non-existing intermediate directories.
-
.open(path, &block)
Opens a directory and yields it, closing it at the end of the block.
-
.rmdir(path)
Removes the directory at the given path.
Instance Method Summary
-
#children : Array(String)
Returns an array containing all of the filenames except for
.
and..
in the given directory. -
#close
Closes the directory stream.
-
#each(&block) : Nil
Calls the block once for each entry in this directory, passing the filename of each entry as a parameter to the block.
- #each
-
#each_child(&block) : Nil
Calls the block once for each entry except for
.
and..
in this directory, passing the filename of each entry as a parameter to the block. - #each_child
-
#entries : Array(String)
Returns an array containing all of the filenames in the given directory.
- #inspect(io)
- #path : String
- #pretty_print(pp)
-
#read
Reads the next entry from dir and returns it as a string.
-
#rewind
Repositions this directory to the first entry.
- #to_s(io)
Instance methods inherited from module Iterable(String)
chunk(reuse = false, &block : T -> U) forall U
chunk,
cycle(n)cycle cycle, each each, each_cons(count : Int, reuse = false) each_cons, each_slice(count : Int, reuse = false) each_slice, each_with_index(offset = 0) each_with_index, each_with_object(obj) each_with_object
Instance methods inherited from module Enumerable(String)
all?(&block)all? all?, any?(&block)
any? any?, chunks(&block : T -> U) forall U chunks, compact_map(&block) compact_map, count(&block)
count(item) count, cycle(n, &block)
cycle(&block) cycle, each(&block : T -> _) each, each_cons(count : Int, reuse = false, &block) each_cons, each_slice(count : Int, reuse = false, &block) each_slice, each_with_index(offset = 0, &block) each_with_index, each_with_object(obj, &block) each_with_object, find(if_none = nil, &block) find, first(count : Int)
first first, first? first?, flat_map(&block : T -> Array(U) | Iterator(U) | U) forall U flat_map, grep(pattern) grep, group_by(&block : T -> U) forall U group_by, in_groups_of(size : Int, filled_up_with : U = nil) forall U
in_groups_of(size : Int, filled_up_with : U = nil, reuse = false, &block) forall U in_groups_of, includes?(obj) includes?, index(&block)
index(obj) index, index_by(&block : T -> U) forall U index_by, join(separator, io)
join(separator = "")
join(separator, io, &block)
join(separator = "", &block) join, map(&block : T -> U) forall U map, map_with_index(&block : T, Int32 -> U) forall U map_with_index, max max, max? max?, max_by(&block : T -> U) forall U max_by, max_by?(&block : T -> U) forall U max_by?, max_of(&block : T -> U) forall U max_of, max_of?(&block : T -> U) forall U max_of?, min min, min? min?, min_by(&block : T -> U) forall U min_by, min_by?(&block : T -> U) forall U min_by?, min_of(&block : T -> U) forall U min_of, min_of?(&block : T -> U) forall U min_of?, minmax minmax, minmax? minmax?, minmax_by(&block : T -> U) forall U minmax_by, minmax_by?(&block : T -> U) forall U minmax_by?, minmax_of(&block : T -> U) forall U minmax_of, minmax_of?(&block : T -> U) forall U minmax_of?, none?(&block)
none? none?, one?(&block) one?, partition(&block) partition, product(&block)
product(initial : Number, &block)
product
product(initial : Number) product, reduce(&block)
reduce(memo, &block) reduce, reject(&block : T -> ) reject, select(&block : T -> ) select, size size, skip(count : Int) skip, skip_while(&block) skip_while, sum(initial)
sum
sum(initial, &block)
sum(&block) sum, take_while(&block) take_while, to_a to_a, to_h to_h, to_set to_set
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference)
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new
Instance methods inherited from class Object
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, class class, dup dup, hash(hasher)
hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try, unsafe_as(type : T.class) forall T unsafe_as
Constructor methods inherited from class Object
from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io : String | IO) : self from_yaml
Constructor Detail
Class Method Detail
Returns an array of all files that match against any of patterns.
The pattern syntax is similar to shell filename globbing, see File.match?
for details.
NOTE Path separator in patterns needs to be always /
. The returned file names use system-specific path separators.
Returns an array of all files that match against any of patterns.
The pattern syntax is similar to shell filename globbing, see File.match?
for details.
NOTE Path separator in patterns needs to be always /
. The returned file names use system-specific path separators.
Changes the current working directory of the process to the given string and invokes the block, restoring the original working directory when the block exits.
Returns true
if the directory at path is empty, otherwise returns false
.
Raises Errno
if the directory at path does not exist.
Dir.mkdir("bar")
Dir.empty?("bar") # => true
File.write("bar/a_file", "The content")
Dir.empty?("bar") # => false
Returns true
if the given path exists and is a directory
Creates a new directory at the given path. The linux-style permission mode can be specified, with a default of 777 (0o777).
Creates a new directory at the given path, including any non-existing intermediate directories. The linux-style permission mode can be specified, with a default of 777 (0o777).
Opens a directory and yields it, closing it at the end of the block. Returns the value of the block.
Instance Method Detail
Returns an array containing all of the filenames except for .
and ..
in the given directory.
Calls the block once for each entry in this directory, passing the filename of each entry as a parameter to the block.
Dir.mkdir("testdir")
File.write("testdir/config.h", "")
d = Dir.new("testdir")
d.each { |x| puts "Got #{x}" }
produces:
Got .
Got ..
Got config.h
Calls the block once for each entry except for .
and ..
in this directory,
passing the filename of each entry as a parameter to the block.
Dir.mkdir("testdir")
File.write("testdir/config.h", "")
d = Dir.new("testdir")
d.each_child { |x| puts "Got #{x}" }
produces:
Got config.h
Returns an array containing all of the filenames in the given directory.
Reads the next entry from dir and returns it as a string. Returns nil
at the end of the stream.
d = Dir.new("testdir")
array = [] of String
while file = d.read
array << file
end
array.sort # => [".", "..", "config.h"]