Struct File

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

An open file on the filesystem.

Depending on what options the file was opened with, this type can be used for reading and/or writing.

Files are automatically closed when they get dropped and any errors detected on closing are ignored. Use the sync_all method before dropping a file if such errors need to be handled.

This type is an async version of std::fs::File.

§Examples

Create a new file and write some bytes to it:

use async_std::fs::File;
use async_std::prelude::*;

let mut file = File::create("a.txt").await?;
file.write_all(b"Hello, world!").await?;

Read the contents of a file into a vector of bytes:

use async_std::fs::File;
use async_std::prelude::*;

let mut file = File::open("a.txt").await?;
let mut contents = Vec::new();
file.read_to_end(&mut contents).await?;

Implementations§

Source§

impl File

Source

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

Opens a file in read-only mode.

See the OpenOptions::open function for more options.

§Errors

An error will be returned in the following situations:

  • path does not point to an existing file.
  • The current process lacks permissions to read the file.
  • Some other I/O error occurred.

For more details, see the list of errors documented by OpenOptions::open.

§Examples
use async_std::fs::File;

let file = File::open("a.txt").await?;
Source

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

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.

See the OpenOptions::open function for more options.

§Errors

An error will be returned in the following situations:

  • The file’s parent directory does not exist.
  • The current process lacks permissions to write to the file.
  • Some other I/O error occurred.

For more details, see the list of errors documented by OpenOptions::open.

§Examples
use async_std::fs::File;

let file = File::create("a.txt").await?;
Source

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

Synchronizes OS-internal buffered contents and metadata to disk.

This function will ensure that all in-memory data reaches the filesystem.

This can be used to handle errors that would otherwise only be caught when the file is closed. When a file is dropped, errors in synchronizing this in-memory data are ignored.

§Examples
use async_std::fs::File;
use async_std::prelude::*;

let mut file = File::create("a.txt").await?;
file.write_all(b"Hello, world!").await?;
file.sync_all().await?;
Source

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

Synchronizes OS-internal buffered contents to disk.

This is similar to sync_all, except that file metadata may not be synchronized.

This is intended for use cases that must synchronize the contents of the file, but don’t need the file metadata synchronized to disk.

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

§Examples
use async_std::fs::File;
use async_std::prelude::*;

let mut file = File::create("a.txt").await?;
file.write_all(b"Hello, world!").await?;
file.sync_data().await?;
Source

pub async fn set_len(&self, size: u64) -> Result<()>

Truncates or extends the file.

If size is less than the current file size, then the file will be truncated. If it is greater than the current file size, then the file will be extended to size and have all intermediate data filled with zeros.

The file’s cursor stays at the same position, even if the cursor ends up being past the end of the file after this operation.

§Examples
use async_std::fs::File;

let file = File::create("a.txt").await?;
file.set_len(10).await?;
Source

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

Reads the file’s metadata.

§Examples
use async_std::fs::File;

let file = File::open("a.txt").await?;
let metadata = file.metadata().await?;
Source

pub async fn set_permissions(&self, perm: Permissions) -> Result<()>

Changes the permissions on the file.

§Errors

An error will be returned in the following situations:

  • The current process lacks permissions to change attributes on the file.
  • Some other I/O error occurred.
§Examples
use async_std::fs::File;

let file = File::create("a.txt").await?;

let mut perms = file.metadata().await?.permissions();
perms.set_readonly(true);
file.set_permissions(perms).await?;

Trait Implementations§

Source§

impl AsRawFd for File

Available on Unix only.
Source§

fn as_raw_fd(&self) -> RawFd

Extracts the raw file descriptor. Read more
Source§

impl AsRawHandle for File

Available on Windows only.
Source§

fn as_raw_handle(&self) -> RawHandle

Extracts the raw handle, without taking any ownership.
Source§

impl Debug for File

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for File

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<File> for File

Source§

fn from(file: File) -> File

Converts to this type from the input type.
Source§

impl FromRawFd for File

Available on Unix only.
Source§

unsafe fn from_raw_fd(fd: RawFd) -> File

Constructs a new instance of Self from the given raw file descriptor. Read more
Source§

impl FromRawHandle for File

Available on Windows only.
Source§

unsafe fn from_raw_handle(handle: RawHandle) -> File

Constructs a new I/O object from the specified raw handle. Read more
Source§

impl IntoRawFd for File

Available on Unix only.
Source§

fn into_raw_fd(self) -> RawFd

Consumes this object, returning the raw underlying file descriptor. Read more
Source§

impl IntoRawHandle for File

Available on Windows only.
Source§

fn into_raw_handle(self) -> RawHandle

Consumes this object, returning the raw underlying handle. Read more
Source§

impl Read for &File

Source§

fn poll_read( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8], ) -> Poll<Result<usize>>

Attempt to read from the AsyncRead into buf.
Source§

fn poll_read_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &mut [IoSliceMut<'_>], ) -> Poll<Result<usize>>

Attempt to read from the AsyncRead into bufs using vectored IO operations.
Source§

fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> ImplFuture<Result<usize>>
where Self: Unpin,

Reads some bytes from the byte stream. Read more
Source§

fn read_vectored<'a>( &'a mut self, bufs: &'a mut [IoSliceMut<'a>], ) -> ImplFuture<Result<usize>>
where Self: Unpin,

Like read, except that it reads into a slice of buffers. Read more
Source§

fn read_to_end<'a>( &'a mut self, buf: &'a mut Vec<u8>, ) -> ImplFuture<Result<usize>>
where Self: Unpin,

Reads all bytes from the byte stream. Read more
Source§

fn read_to_string<'a>( &'a mut self, buf: &'a mut String, ) -> ImplFuture<Result<usize>>
where Self: Unpin,

Reads all bytes from the byte stream and appends them into a string. Read more
Source§

fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ImplFuture<Result<()>>
where Self: Unpin,

Reads the exact number of bytes required to fill buf. 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§

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 a Stream over its bytes. Read more
Source§

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

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

impl Read for File

Source§

fn poll_read( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8], ) -> Poll<Result<usize>>

Attempt to read from the AsyncRead into buf.
Source§

fn poll_read_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &mut [IoSliceMut<'_>], ) -> Poll<Result<usize>>

Attempt to read from the AsyncRead into bufs using vectored IO operations.
Source§

fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> ImplFuture<Result<usize>>
where Self: Unpin,

Reads some bytes from the byte stream. Read more
Source§

fn read_vectored<'a>( &'a mut self, bufs: &'a mut [IoSliceMut<'a>], ) -> ImplFuture<Result<usize>>
where Self: Unpin,

Like read, except that it reads into a slice of buffers. Read more
Source§

fn read_to_end<'a>( &'a mut self, buf: &'a mut Vec<u8>, ) -> ImplFuture<Result<usize>>
where Self: Unpin,

Reads all bytes from the byte stream. Read more
Source§

fn read_to_string<'a>( &'a mut self, buf: &'a mut String, ) -> ImplFuture<Result<usize>>
where Self: Unpin,

Reads all bytes from the byte stream and appends them into a string. Read more
Source§

fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ImplFuture<Result<()>>
where Self: Unpin,

Reads the exact number of bytes required to fill buf. 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§

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 a Stream over its bytes. Read more
Source§

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

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

impl Seek for &File

Source§

fn poll_seek( self: Pin<&mut Self>, cx: &mut Context<'_>, pos: SeekFrom, ) -> Poll<Result<u64>>

Attempt to seek to an offset, in bytes, in a stream.
Source§

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

Seeks to a new position in a byte stream. Read more
Source§

impl Seek for File

Source§

fn poll_seek( self: Pin<&mut Self>, cx: &mut Context<'_>, pos: SeekFrom, ) -> Poll<Result<u64>>

Attempt to seek to an offset, in bytes, in a stream.
Source§

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

Seeks to a new position in a byte stream. Read more
Source§

impl Write for &File

Source§

fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>

Attempt to write bytes from buf into the object.
Source§

fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>

Attempt to flush the object, ensuring that any buffered data reach their destination.
Source§

fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>

Attempt to close the object.
Source§

fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize>>

Attempt to write bytes from bufs into the object using vectored IO operations.
Source§

fn write<'a>(&'a mut self, buf: &'a [u8]) -> ImplFuture<Result<usize>>
where Self: Unpin,

Writes some bytes into the byte stream. Read more
Source§

fn flush(&mut self) -> ImplFuture<Result<()>>
where Self: Unpin,

Flushes the stream to ensure that all buffered contents reach their destination. Read more
Source§

fn write_vectored<'a>( &'a mut self, bufs: &'a [IoSlice<'a>], ) -> ImplFuture<Result<usize>>
where Self: Unpin,

Like write, except that it writes from a slice of buffers. Read more
Source§

fn write_all<'a>(&'a mut self, buf: &'a [u8]) -> ImplFuture<Result<()>>
where Self: Unpin,

Writes an entire buffer into the byte stream. Read more
Source§

fn write_fmt<'a>(&'a mut self, fmt: Arguments<'_>) -> ImplFuture<Result<()>>
where Self: Unpin,

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

impl Write for File

Source§

fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>

Attempt to write bytes from buf into the object.
Source§

fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>

Attempt to flush the object, ensuring that any buffered data reach their destination.
Source§

fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>

Attempt to close the object.
Source§

fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize>>

Attempt to write bytes from bufs into the object using vectored IO operations.
Source§

fn write<'a>(&'a mut self, buf: &'a [u8]) -> ImplFuture<Result<usize>>
where Self: Unpin,

Writes some bytes into the byte stream. Read more
Source§

fn flush(&mut self) -> ImplFuture<Result<()>>
where Self: Unpin,

Flushes the stream to ensure that all buffered contents reach their destination. Read more
Source§

fn write_vectored<'a>( &'a mut self, bufs: &'a [IoSlice<'a>], ) -> ImplFuture<Result<usize>>
where Self: Unpin,

Like write, except that it writes from a slice of buffers. Read more
Source§

fn write_all<'a>(&'a mut self, buf: &'a [u8]) -> ImplFuture<Result<()>>
where Self: Unpin,

Writes an entire buffer into the byte stream. Read more
Source§

fn write_fmt<'a>(&'a mut self, fmt: Arguments<'_>) -> ImplFuture<Result<()>>
where Self: Unpin,

Writes a formatted string into this writer, returning any error encountered. 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> ReadExt for T
where T: Read + ?Sized,

Source§

fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadFuture<'a, Self>
where Self: Unpin,

Reads some bytes from the byte stream. Read more
Source§

fn read_vectored<'a>( &'a mut self, bufs: &'a mut [IoSliceMut<'a>], ) -> ReadVectoredFuture<'a, Self>
where Self: Unpin,

Like read, except that it reads into a slice of buffers. Read more
Source§

fn read_to_end<'a>( &'a mut self, buf: &'a mut Vec<u8>, ) -> ReadToEndFuture<'a, Self>
where Self: Unpin,

Reads all bytes from the byte stream. Read more
Source§

fn read_to_string<'a>( &'a mut self, buf: &'a mut String, ) -> ReadToStringFuture<'a, Self>
where Self: Unpin,

Reads all bytes from the byte stream and appends them into a string. Read more
Source§

fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExactFuture<'a, Self>
where Self: Unpin,

Reads the exact number of bytes required to fill buf. 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§

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 a Stream over its bytes. Read more
Source§

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

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

impl<T> SeekExt for T
where T: Seek + ?Sized,

Source§

fn seek(&mut self, pos: SeekFrom) -> SeekFuture<'_, Self>
where Self: Unpin,

Seeks to a new position in a byte stream. Read more
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.
Source§

impl<T> WriteExt for T
where T: Write + ?Sized,

Source§

fn write<'a>(&'a mut self, buf: &'a [u8]) -> WriteFuture<'a, Self>
where Self: Unpin,

Writes some bytes into the byte stream. Read more
Source§

fn flush(&mut self) -> FlushFuture<'_, Self>
where Self: Unpin,

Flushes the stream to ensure that all buffered contents reach their destination. Read more
Source§

fn write_vectored<'a>( &'a mut self, bufs: &'a [IoSlice<'a>], ) -> WriteVectoredFuture<'a, Self>
where Self: Unpin,

Like write, except that it writes from a slice of buffers. Read more
Source§

fn write_all<'a>(&'a mut self, buf: &'a [u8]) -> WriteAllFuture<'a, Self>
where Self: Unpin,

Writes an entire buffer into the byte stream. Read more
Source§

fn write_fmt<'a>(&'a mut self, fmt: Arguments<'_>) -> WriteFmtFuture<'a, Self>
where Self: Unpin,

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