Struct File

Source
pub struct File { /* private fields */ }
Expand description

Represents a file in the file system.

Implementations§

Source§

impl File

Source

pub fn open<P: AsRef<Path>>(path: P) -> Result<Self>

Attempts to open a file in read-only mode.

See the OpenOptions::open method for more details.

If you only need to read the entire file contents, consider fs::read() or fs::read_to_string() instead.

§Errors

This function will return an error if path does not already exist. Other errors may also be returned according to OpenOptions::open.

Source

pub fn create<P: AsRef<Path>>(path: P) -> Result<Self>

Opens a file in write-only mode.

This function will create a file if it does not exist, and will truncate it if it does.

Depending on the platform, this function may fail if the full directory path does not exist. See the OpenOptions::open function for more details.

See also fs::write() for a simple function to create a file with some given data.

§Errors

See OpenOptions::open.

Source

pub fn create_new<P: AsRef<Path>>(path: P) -> Result<File>

Creates a new file in read-write mode; error if the file exists.

This function will create a file if it does not exist, or return an error if it does. This way, if the call succeeds, the file returned is guaranteed to be new. If a file exists at the target location, creating a new file will fail with AlreadyExists or another error based on the situation. See OpenOptions::open for a non-exhaustive list of likely errors.

This option is useful because it is atomic. Otherwise between checking whether a file exists and creating a new one, the file may have been created by another process (a TOCTOU race condition / attack).

This can also be written using File::options().read(true).write(true).create_new(true).open(...).

§Errors

See OpenOptions::open.

Source

pub const fn options() -> OpenOptions

Returns a new OpenOptions object.

This function returns a new OpenOptions object that you can use to open or create a file with specific options if open() or create() are not appropriate.

It is equivalent to OpenOptions::new(), but allows you to write more readable code. Instead of OpenOptions::new().append(true).open("example.log"), you can write File::options().append(true).open("example.log"). This also avoids the need to import OpenOptions.

See the OpenOptions::new function for more details.

Source

pub fn metadata(&self) -> Result<Metadata>

Queries metadata about the underlying file.

§Errors
Source

pub fn sync_all(&self) -> Result<()>

Attempts to sync all OS-internal file content and metadata to disk.

This function will attempt to ensure that all in-memory data reaches the filesystem before returning.

This can be used to handle errors that would otherwise only be caught when the File is closed, as dropping a File will ignore all errors. Note, however, that sync_all is generally more expensive than closing a file by dropping it, because the latter is not required to block until the data has been written to the filesystem.

If synchronizing the metadata is not required, use sync_data instead.

§Errors

This function is infallible.

Source

pub fn sync_data(&self) -> Result<()>

This function is similar to sync_all, except that it might not synchronize file metadata to the filesystem.

This is intended for use cases that must synchronize content, but don’t need the metadata on disk. The goal of this method is to reduce disk operations.

Note that some platforms may simply implement this in terms of sync_all.

§Errors

This function is infallible.

Trait Implementations§

Source§

impl Drop for File

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Read for File

Source§

fn read(&mut self, buf: &mut [u8]) -> Result<usize>

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Source§

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>

Read all bytes until EOF in this source, placing them into buf. Read more
Source§

unsafe fn initializer(&self) -> Initializer

Determines if this Reader can work with buffers of uninitialized memory. Read more
Source§

fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

Read the exact number of bytes required to fill buf. Read more
Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adaptor for this instance of Read. Read more
Source§

fn bytes(self) -> Bytes<Self>
where Self: Sized,

Transforms this Read instance to an Iterator over its bytes. Read more
Source§

fn chain<R>(self, next: R) -> Chain<Self, R>
where R: Read, Self: Sized,

Creates an adaptor which will chain this stream with another. Read more
Source§

fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

Creates an adaptor which will read at most limit bytes from it. Read more
Source§

impl Seek for File

Source§

fn seek(&mut self, pos: SeekFrom) -> Result<u64>

Seek to an offset, in bytes, in a stream. Read more
Source§

impl Write for File

Source§

fn write(&mut self, buf: &[u8]) -> Result<usize>

Write a buffer into this writer, returning how many bytes were written. Read more
Source§

fn flush(&mut self) -> Result<()>

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
Source§

fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer into this writer. Read more
Source§

fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

Writes a formatted string into this writer, returning any error encountered. Read more
Source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adaptor for this instance of Write. Read more

Auto Trait Implementations§

§

impl Freeze for File

§

impl RefUnwindSafe for File

§

impl !Send for File

§

impl !Sync for File

§

impl Unpin for File

§

impl UnwindSafe for File

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.