pub struct Directory<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize>where
D: BlockDevice,
T: TimeSource,{ /* private fields */ }Expand description
A handle for an open directory on disk, which closes on drop.
In contrast to a RawDirectory, a Directory holds a mutable reference to
its parent VolumeManager, which restricts which operations you can perform.
If you drop a value of this type, it closes the directory automatically, but
any error that may occur will be ignored. To handle potential errors, use
the Directory::close method.
Implementations§
Source§impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>where
D: BlockDevice,
T: TimeSource,
impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>where
D: BlockDevice,
T: TimeSource,
Sourcepub fn new(
raw_directory: RawDirectory,
volume_mgr: &'a VolumeManager<D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>,
) -> Self
pub fn new( raw_directory: RawDirectory, volume_mgr: &'a VolumeManager<D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>, ) -> Self
Create a new Directory from a RawDirectory
Sourcepub fn open_dir<N>(&self, name: N) -> Result<Self, Error<D::Error>>where
N: ToShortFileName,
pub fn open_dir<N>(&self, name: N) -> Result<Self, Error<D::Error>>where
N: ToShortFileName,
Open a directory.
You can then read the directory entries with iterate_dir and open_file_in_dir.
See VolumeManager::open_dir for details, except the directory
given is this directory.
Sourcepub fn change_dir<N>(&mut self, name: N) -> Result<(), Error<D::Error>>where
N: ToShortFileName,
pub fn change_dir<N>(&mut self, name: N) -> Result<(), Error<D::Error>>where
N: ToShortFileName,
Change to a directory, mutating this object.
You can then read the directory entries with iterate_dir and open_file_in_dir.
Sourcepub fn find_directory_entry<N>(
&self,
name: N,
) -> Result<DirEntry, Error<D::Error>>where
N: ToShortFileName,
pub fn find_directory_entry<N>(
&self,
name: N,
) -> Result<DirEntry, Error<D::Error>>where
N: ToShortFileName,
Read the directory entry with the given filename from this directory, if it exists.
See VolumeManager::find_directory_entry for details, except the
directory given is this directory.
Sourcepub fn directory_entry_exists<N: ToShortFileName>(&self, name: N) -> bool
pub fn directory_entry_exists<N: ToShortFileName>(&self, name: N) -> bool
Check whether a directory entry exists.
Sourcepub fn iterate_dir<F>(&self, func: F) -> Result<(), Error<D::Error>>
pub fn iterate_dir<F>(&self, func: F) -> Result<(), Error<D::Error>>
Call a callback function for each directory entry in a directory.
Long File Names will be ignored.
See VolumeManager::iterate_dir for details, except the directory
given is this directory.
Sourcepub fn iterate_dir_lfn<F>(
&self,
lfn_buffer: &mut LfnBuffer<'_>,
func: F,
) -> Result<(), Error<D::Error>>
pub fn iterate_dir_lfn<F>( &self, lfn_buffer: &mut LfnBuffer<'_>, func: F, ) -> Result<(), Error<D::Error>>
Call a callback function for each directory entry in a directory, and process Long File Names.
See VolumeManager::iterate_dir_lfn for details, except the
directory given is this directory.
Sourcepub fn open_file_in_dir<N>(
&self,
name: N,
mode: Mode,
) -> Result<File<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>, Error<D::Error>>where
N: ToShortFileName,
pub fn open_file_in_dir<N>(
&self,
name: N,
mode: Mode,
) -> Result<File<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>, Error<D::Error>>where
N: ToShortFileName,
Open a file.
See VolumeManager::open_file_in_dir for details, except the
directory given is this directory.
Sourcepub fn open_long_name_file_in_dir(
&self,
name: &str,
mode: Mode,
) -> Result<File<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>, Error<D::Error>>
pub fn open_long_name_file_in_dir( &self, name: &str, mode: Mode, ) -> Result<File<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>, Error<D::Error>>
Open a file.
See VolumeManager::open_long_name_file_in_dir for details, except the
directory given is this directory.
Sourcepub fn delete_entry_in_dir<N>(&self, name: N) -> Result<(), Error<D::Error>>where
N: ToShortFileName,
pub fn delete_entry_in_dir<N>(&self, name: N) -> Result<(), Error<D::Error>>where
N: ToShortFileName,
Delete a file/directory.
See VolumeManager::delete_entry_in_dir for details, except the
directory given is this directory.
Sourcepub fn make_dir_in_dir<N>(&self, name: N) -> Result<(), Error<D::Error>>where
N: ToShortFileName,
pub fn make_dir_in_dir<N>(&self, name: N) -> Result<(), Error<D::Error>>where
N: ToShortFileName,
Create a new empty directory.
See VolumeManager::make_dir_in_dir for details, except the
directory given is this directory.
Sourcepub fn to_raw_directory(self) -> RawDirectory
pub fn to_raw_directory(self) -> RawDirectory
Convert back to a raw directory
Sourcepub fn close(self) -> Result<(), Error<D::Error>>
pub fn close(self) -> Result<(), Error<D::Error>>
Consume the Directory handle and close it. The behavior of this is similar
to using core::mem::drop or letting the Directory go out of scope,
except this lets the user handle any errors that may occur in the process,
whereas when using drop, any errors will be discarded silently.