note description: "Directories, in the Unix sense, with creation and exploration features" library: "Free implementation of ELKS library" status: "See notice at end of class." legal: "See notice at end of class." date: "$Date: 2017-03-23 19:18:26 +0000 (Thu, 23 Mar 2017) $" revision: "$Revision: 100033 $" class interface DIRECTORY create make, make_with_path, make_with_name, make_open_read feature -- Initialization make (dn: READABLE_STRING_GENERAL) -- Create directory object for directory -- of name dn. require string_exists: dn /= Void ensure name_set: internal_name = dn make_with_name (dn: READABLE_STRING_GENERAL) -- Create directory object for directory -- of name dn. require string_exists: dn /= Void ensure name_set: internal_name = dn make_with_path (a_path: PATH) -- Create file object with a_path as path. require a_path_attached: a_path /= Void make_open_read (dn: READABLE_STRING_GENERAL) -- Create directory object for directory -- of name dn and open it for reading. require string_exists: dn /= Void ensure name_set: internal_name = dn feature -- Creation create_dir -- Create a physical directory. require physical_not_exists: not exists recursive_create_dir -- Create the directory recursively. -- -- Ex: if /temp/ exists but not /temp/test, then trying -- to create /temp/test/toto will create /temp/test -- and then /temp/test/toto. ensure physical_exists: exists feature -- Access path: PATH -- Associated path of Current. ensure entry_not_empty: not Result.is_empty readentry -- Read next directory entry -- make result available in lastentry. -- Make result Void if all entries have been read. require is_opened: not is_closed has_entry (entry_name: READABLE_STRING_GENERAL): BOOLEAN -- Has directory the entry entry_name? require string_exists: entry_name /= Void open_read -- Open directory for reading. close -- Close directory. require is_open: not is_closed start -- Go to first entry of directory. require is_opened: not is_closed change_name (new_name: READABLE_STRING_GENERAL) -- Change directory name to new_name. require new_name_not_void: new_name /= Void directory_exists: exists ensure name_changed: internal_name = new_name rename_path (new_name: PATH) -- Change directory name to new_name. require new_name_not_void: new_name /= Void new_name_not_empty: not new_name.is_empty file_exists: exists ensure name_changed: internal_name = new_name.name feature -- Measurement count: INTEGER_32 -- Number of entries in directory. require directory_exists: exists feature -- Conversion entries: ARRAYED_LIST [PATH] -- Entries (i.e. just the file or directory name) of current directory, -- in sequential format, in a platform specific order. resolved_entries: ARRAYED_LIST [PATH] -- Entries of current directory resolved in the context of current directory (i.e. the path -- of the current directory appended with the entry) in sequential format, in a platform specific -- order. -- Compared to entries, it removes the need for callers to build the full path of the entry -- using Current. linear_representation_32: ARRAYED_LIST [STRING_32] -- The entries, in sequential format. feature -- Status report last_entry_32: detachable STRING_32 -- Last Unicode entry read by readentry if any. last_entry_8: detachable STRING_8 -- Raw byte sequence of the last found entry if this entry cannot be -- expressed with Unicode characters. This is useful -- when handling a file that is not a valid UTF-8 sequence on Unix. is_closed: BOOLEAN -- Is current directory closed? is_empty: BOOLEAN -- Is directory empty? require directory_exists: exists exists: BOOLEAN -- Does the directory exist? is_readable: BOOLEAN -- Is the directory readable? require directory_exists: exists is_executable: BOOLEAN -- Is the directory executable? require directory_exists: exists is_writable: BOOLEAN -- Is the directory writable? require directory_exists: exists feature -- Removal delete -- Delete directory if empty. require directory_exists: exists empty_directory: is_empty delete_content -- Delete all files located in current directory and its -- subdirectories. require directory_exists: exists recursive_delete -- Delete directory, its files and its subdirectories. require directory_exists: exists delete_content_with_action (action: detachable PROCEDURE [LIST [READABLE_STRING_GENERAL]]; is_cancel_requested: detachable FUNCTION [BOOLEAN]; file_number: INTEGER_32) -- Delete all files located in current directory and its -- subdirectories. -- -- action is called each time at most file_number files has -- been deleted and before the function exits. If a_file_number -- is non-positive, action is not called. -- action may be set to Void if you don't need it. -- -- Same for is_cancel_requested. -- Make it return True to cancel the operation. -- is_cancel_requested may be set to Void if you don't need it. require directory_exists: exists valid_file_number: file_number >= 0 recursive_delete_with_action (action: detachable PROCEDURE [LIST [READABLE_STRING_GENERAL]]; is_cancel_requested: detachable FUNCTION [BOOLEAN]; file_number: INTEGER_32) -- Delete directory, its files and its subdirectories. -- -- action is called each time at most file_number files has -- been deleted and before the function exits. If a_file_number -- is non-positive, action is not called. require directory_exists: exists dispose -- Ensure this medium is closed when garbage collected. invariant name_attached: attached internal_name note copyright: "Copyright (c) 1984-2017, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end -- class DIRECTORY
Generated by ISE EiffelStudio