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 : Path | String)
Returns a new directory object for the named directory.
-
.open(path : Path | String) : self
Alias for
.new(path)
Class Method Summary
-
.[](patterns : Enumerable, match : File::MatchOptions = File::MatchOptions.glob_default, follow_symlinks : Bool = false) : Array(String)
Returns an array of all files that match against any of patterns.
-
.[](patterns : Enumerable, match_hidden, follow_symlinks = false) : Array(String)
Returns an array of all files that match against any of patterns.
DEPRECATED Use the overload with a
match
parameter instead -
.[](*patterns : Path | String, match : File::MatchOptions = File::MatchOptions.glob_default, follow_symlinks : Bool = false) : Array(String)
Returns an array of all files that match against any of patterns.
-
.[](*patterns : Path | String, match_hidden, follow_symlinks = false) : Array(String)
Returns an array of all files that match against any of patterns.
DEPRECATED Use the overload with a
match
parameter instead -
.cd(path : Path | String) : String
Changes the current working directory of the process to the given string.
-
.cd(path : Path | String, &)
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 : Path | String) : Array(String)
See
#children
. -
.current : String
Returns an absolute path to the current working directory.
-
.delete(path : Path | String) : Nil
Removes the directory at path.
-
.delete?(path : Path | String) : Bool
Removes the directory at path, or returns
false
if the directory does not exist. -
.each(dirname : Path | String, & : String -> )
See
#each
. -
.each_child(dirname : Path | String, & : String -> )
See
#each_child
. -
.empty?(path : Path | String) : Bool
Returns
true
if the directory at path is empty, otherwise returnsfalse
. -
.entries(dirname : Path | String) : Array(String)
See
#entries
. -
.exists?(path : Path | String) : Bool
Returns
true
if the given path exists and is a directory -
.glob(patterns : Enumerable, match : File::MatchOptions = File::MatchOptions.glob_default, follow_symlinks : Bool = false) : Array(String)
Returns an array of all files that match against any of patterns.
-
.glob(patterns : Enumerable, match_hidden, follow_symlinks = false) : Array(String)
Returns an array of all files that match against any of patterns.
DEPRECATED Use the overload with a
match
parameter instead -
.glob(*patterns : Path | String, match : File::MatchOptions = File::MatchOptions.glob_default, follow_symlinks : Bool = false) : Array(String)
Returns an array of all files that match against any of patterns.
-
.glob(*patterns : Path | String, match_hidden, follow_symlinks = false) : Array(String)
Returns an array of all files that match against any of patterns.
DEPRECATED Use the overload with a
match
parameter instead -
.glob(patterns : Enumerable, match : File::MatchOptions = File::MatchOptions.glob_default, follow_symlinks : Bool = false, &block : String -> _)
Yields all files that match against any of patterns.
-
.glob(patterns : Enumerable, match_hidden, follow_symlinks = false, &block : String -> _)
Yields all files that match against any of patterns.
DEPRECATED Use the overload with a
match
parameter instead -
.glob(*patterns : Path | String, match : File::MatchOptions = File::MatchOptions.glob_default, follow_symlinks : Bool = false, &block : String -> _)
Yields all files that match against any of patterns.
-
.glob(*patterns : Path | String, match_hidden, follow_symlinks = false, &block : String -> _)
Yields all files that match against any of patterns.
DEPRECATED Use the overload with a
match
parameter instead -
.mkdir(path : Path | String, mode = 511) : Nil
Creates a new directory at the given path.
-
.mkdir_p(path : Path | String, mode = 511) : Nil
Creates a new directory at the given path, including any non-existing intermediate directories.
-
.open(path : Path | String, & : self -> )
Opens a directory and yields it, closing it at the end of the block.
-
.tempdir : String
Returns the tmp dir used for tempfile.
Instance Method Summary
-
#children : Array(String)
Returns an array containing all of the filenames except for
.
and..
in the given directory. -
#close : Nil
Closes the directory stream.
-
#each(& : String -> ) : Nil
Calls the block once for each entry in this directory, passing the filename of each entry as a parameter to the block.
-
#each : Iterator(String)
Must return an
Iterator
over the elements in this collection. -
#each_child(& : String -> ) : 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 : Iterator(String)
Returns an iterator over of the all entries in this directory except for
.
and..
. -
#entries : Array(String)
Returns an array containing all of entries in the given directory including "." and "..".
- #info : File::Info
-
#inspect(io : IO) : Nil
Appends a String representation of this object which includes its class name, its object address and the values of all instance variables.
-
#path : String
Returns the path of this directory.
- #pretty_print(pp)
-
#read : String | Nil
Reads the next entry from dir and returns it as a string.
-
#rewind : self
Repositions this directory to the first entry.
-
#to_s(io : IO) : Nil
Appends a short String representation of this object which includes its class name and its object address.
Instance methods inherited from module Iterable(String)
chunk(reuse = false, &block : T -> U) forall U
chunk,
chunk_while(reuse : Bool | Array(T) = false, &block : T, T -> B) forall B
chunk_while,
cycle(n)cycle cycle, each each, each_cons(count : Int, reuse = false) each_cons, each_cons_pair each_cons_pair, each_slice(count : Int, reuse = false) each_slice, each_step(n : Int)
each_step(n : Int, *, offset : Int) each_step, each_with_index(offset = 0) each_with_index, each_with_object(obj) each_with_object, slice_after(reuse : Bool | Array(T) = false, &block : T -> B) forall B
slice_after(pattern, reuse : Bool | Array(T) = false) slice_after, slice_before(reuse : Bool | Array(T) = false, &block : T -> B) forall B
slice_before(pattern, reuse : Bool | Array(T) = false) slice_before, slice_when(reuse : Bool | Array(T) = false, &block : T, T -> B) forall B slice_when
Instance methods inherited from module Enumerable(String)
accumulate(initial : U) : Array(U) forall Uaccumulate : Array(T)
accumulate(initial : U, &block : U, T -> U) : Array(U) forall U
accumulate(&block : T, T -> T) : Array(T) accumulate, all?(& : T -> ) : Bool
all?(pattern) : Bool
all? : Bool all?, any?(& : T -> ) : Bool
any?(pattern) : Bool
any? : Bool any?, chunks(&block : T -> U) forall U chunks, compact_map(& : T -> _) compact_map, count(& : T -> ) : Int32
count(item) : Int32 count, cycle(n, & : T -> ) : Nil
cycle(& : T -> ) : Nil cycle, each(& : T -> ) each, each_cons(count : Int, reuse = false, &) each_cons, each_cons_pair(& : T, T -> ) : Nil each_cons_pair, each_slice(count : Int, reuse = false, &) each_slice, each_step(n : Int, *, offset : Int = 0, & : T -> ) : Nil each_step, each_with_index(offset = 0, &) each_with_index, each_with_object(obj : U, & : T, U -> ) : U forall U each_with_object, empty? : Bool empty?, find(if_none = nil, & : T -> ) find, find!(& : T -> ) : T find!, find_value(if_none = nil, & : T -> ) find_value, first(&)
first(count : Int) : Array(T)
first : T first, first? : T | Nil first?, flat_map(& : T -> _) flat_map, group_by(& : 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, &) forall U in_groups_of, in_slices_of(size : Int) : Array(Array(T)) in_slices_of, includes?(obj) : Bool includes?, index(& : T -> ) : Int32 | Nil
index(obj) : Int32 | Nil index, index!(& : T -> ) : Int32
index!(obj) : Int32 index!, index_by(& : T -> U) : Hash(U, T) forall U index_by, join(io : IO, separator = "") : Nil
join(separator, io : IO) : Nil
join(separator = "") : String
join(io : IO, separator = "", & : T, IO -> )
join(separator, io : IO, &)
join(separator = "", & : T -> ) join, map(& : T -> U) : Array(U) forall U map, map_with_index(offset = 0, & : T, Int32 -> U) : Array(U) forall U map_with_index, max(count : Int) : Array(T)
max : T max, max? : T | Nil max?, max_by(& : T -> U) : T forall U max_by, max_by?(& : T -> U) : T | Nil forall U max_by?, max_of(& : T -> U) : U forall U max_of, max_of?(& : T -> U) : U | Nil forall U max_of?, min(count : Int) : Array(T)
min : T min, min? : T | Nil min?, min_by(& : T -> U) : T forall U min_by, min_by?(& : T -> U) : T | Nil forall U min_by?, min_of(& : T -> U) : U forall U min_of, min_of?(& : T -> U) : U | Nil forall U min_of?, minmax : Tuple(T, T) minmax, minmax? : Tuple(T | Nil, T | Nil) minmax?, minmax_by(& : T -> U) : Tuple(T, T) forall U minmax_by, minmax_by?(& : T -> U) : Tuple(T, T) | Tuple(Nil, Nil) forall U minmax_by?, minmax_of(& : T -> U) : Tuple(U, U) forall U minmax_of, minmax_of?(& : T -> U) : Tuple(U, U) | Tuple(Nil, Nil) forall U minmax_of?, none?(& : T -> ) : Bool
none?(pattern) : Bool
none? : Bool none?, one?(& : T -> ) : Bool
one?(pattern) : Bool
one? : Bool one?, partition(& : T -> ) : Tuple(Array(T), Array(T))
partition(type : U.class) forall U partition, present? : Bool present?, product(initial : Number)
product
product(initial : Number, & : T -> )
product(& : T -> _) product, reduce(memo, &)
reduce(&) reduce, reduce?(&) reduce?, reject(& : T -> )
reject(type : U.class) forall U
reject(pattern) : Array(T) reject, sample(n : Int, random : Random = Random::DEFAULT) : Array(T)
sample(random : Random = Random::DEFAULT) : T sample, select(& : T -> )
select(type : U.class) : Array(U) forall U
select(pattern) : Array(T) select, size : Int32 size, skip(count : Int) skip, skip_while(& : T -> ) : Array(T) skip_while, sum(initial)
sum
sum(initial, & : T -> )
sum(& : T -> ) sum, take_while(& : T -> ) : Array(T) take_while, tally(hash)
tally : Hash(T, Int32) tally, tally_by(hash, &)
tally_by(&block : T -> U) : Hash(U, Int32) forall U tally_by, to_a : Array(T)
to_a(& : T -> U) : Array(U) forall U to_a, to_h
to_h(& : T -> Tuple(K, V)) forall K, V to_h, to_set : Set(T)
to_set(&block : T -> U) : Set(U) forall U to_set, zip(*others : Indexable | Iterable | Iterator, &)
zip(*others : Indexable | Iterable | Iterator) zip, zip?(*others : Indexable | Iterable | Iterator, &)
zip?(*others : Indexable | Iterable | Iterator) zip?
Class methods inherited from module Enumerable(String)
element_type(x)
element_type
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new,
unsafe_construct(address : Pointer, *args, **opts) : self
unsafe_construct
Class methods inherited from class Reference
pre_initialize(address : Pointer)
pre_initialize
Instance methods inherited from class Object
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) from_yaml
Macros inherited from class Object
class_getter(*names, &block)
class_getter,
class_getter!(*names)
class_getter!,
class_getter?(*names, &block)
class_getter?,
class_property(*names, &block)
class_property,
class_property!(*names)
class_property!,
class_property?(*names, &block)
class_property?,
class_setter(*names)
class_setter,
def_clone
def_clone,
def_equals(*fields)
def_equals,
def_equals_and_hash(*fields)
def_equals_and_hash,
def_hash(*fields)
def_hash,
delegate(*methods, to object)
delegate,
forward_missing_to(delegate)
forward_missing_to,
getter(*names, &block)
getter,
getter!(*names)
getter!,
getter?(*names, &block)
getter?,
property(*names, &block)
property,
property!(*names)
property!,
property?(*names, &block)
property?,
setter(*names)
setter
Constructor Detail
Returns a new directory object for the named directory.
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.
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 an absolute path to the current working directory.
The result is similar to the shell commands pwd
(POSIX) and .cd
(Windows).
On POSIX systems, it respects the environment value $PWD
if available and
if it points to the current working directory.
Removes the directory at path. Raises File::Error
on failure.
On Windows, also raises File::Error
if path points to a directory that
is a reparse point, such as a symbolic link. Those directories can be
deleted using File.delete
instead.
Removes the directory at path, or returns false
if the directory does
not exist. Raises File::Error
on other kinds of failure.
On Windows, also raises File::Error
if path points to a directory that
is a reparse point, such as a symbolic link. Those directories can be
deleted using File.delete?
instead.
Returns true
if the directory at path is empty, otherwise returns false
.
Raises File::NotFoundError
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
Dir.mkdir("testdir")
Dir.exists?("testdir") # => true
Returns an array of all files that match against any of patterns.
Dir.glob "path/to/folder/*.txt" # Returns all files in the target folder that end in ".txt".
Dir.glob "path/to/folder/**/*" # Returns all files in the target folder and its subfolders.
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.
Dir.glob "path/to/folder/*.txt" # Returns all files in the target folder that end in ".txt".
Dir.glob "path/to/folder/**/*" # Returns all files in the target folder and its subfolders.
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.
Yields 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.
Yields 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.
Creates a new directory at the given path. The linux-style permission mode can be specified, with a default of 777 (0o777).
NOTE mode is ignored on windows.
Dir.mkdir("testdir")
Dir.exists?("testdir") # => true
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.
Returns the tmp dir used for tempfile.
Dir.tempdir # => "/tmp"
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
Must return an Iterator
over the elements in this collection.
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 iterator over of the all entries in this directory except for .
and ..
.
See #each_child(&)
Dir.mkdir("test")
File.touch("test/foo")
File.touch("test/bar")
dir = Dir.new("test")
iter = d.each_child
iter.next # => "foo"
iter.next # => "bar"
Returns an array containing all of entries in the given directory including "." and "..".
Dir.mkdir("testdir")
File.touch("testdir/file_1")
File.touch("testdir/file_2")
Dir.new("testdir").entries # => ["..", "file_1", "file_2", "."]
This method is faster than .info
and avoids race conditions if a Dir
is already open on POSIX systems, but not necessarily on windows.
Appends a String representation of this object which includes its class name, its object address and the values of all instance variables.
class Person
def initialize(@name : String, @age : Int32)
end
end
Person.new("John", 32).inspect # => #<Person:0x10fd31f20 @name="John", @age=32>
Returns the path of this directory.
Dir.mkdir("testdir")
dir = Dir.new("testdir")
Dir.mkdir("testdir/extendeddir")
dir2 = Dir.new("testdir/extendeddir")
dir.path # => "testdir"
dir2.path # => "testdir/extendeddir"
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"]
Appends a short String representation of this object which includes its class name and its object address.
class Person
def initialize(@name : String, @age : Int32)
end
end
Person.new("John", 32).to_s # => #<Person:0x10a199f20>