首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用async-std以块为单位读取

使用async-std以块为单位读取
EN

Stack Overflow用户
提问于 2020-12-03 21:40:37
回答 1查看 157关注 0票数 0

我正在尝试实现一些类似于用AsynchronousByteChannel在Java语言中读取文件的功能,比如

代码语言:javascript
复制
   AsynchronousFileChannel channel = AsynchronousFileChannel.open(path...

   channel.read(buffer,... new CompletionHandler<Integer, ByteBuffer>() {
      @Override
      public void completed(Integer result) {
          ...use buffer         
      }

也就是说,尽可能多地读取操作系统,进程,请求更多等等。使用async_std实现这一点的最直接方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-03 21:55:35

您可以使用async_std::io::Read特征的read方法:

代码语言:javascript
复制
use async_std::prelude::*;

let mut reader = obtain_read_somehow();
let mut buf = [0; 4096]; // or however large you want it

// read returns a Poll<Result> so you have to handle the result
loop {
    let byte_count = reader.read(&mut buf).await?;
    if byte_count == 0 {
        // 0 bytes read means we're done
        break;
    }
    // call whatever handler function on the bytes read
    handle(&buf[..byte_count]);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65127131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档