如何将字符串转换为二进制流

描述

在Linux,很多命令都接受标准输入作为命令的参数。比如grep,echo命令都是可以接受标准输入作为命令的参数。

grep命令的全称是全局正则表达式打印,它是Linux中功能最强大且最常用的命令之一。

grep在一个或多个输入文件中搜索与指定模式匹配的行,并将匹配行写入标准输出。如果未指定文件,grep则从标准输入读取内容。

在本教程中,我们将在dart创建进程运行grep命令并将通过管道传递字符串作为grep命令的参数,参数将作为grep命令的标准输入传递。

在dart,进程的标准输入仅接受一个参数并且类型是Stream,因此不能直接传递字符串给进程的标准输入。

必须在传递给进程的标准输入之前将字符串转换为二进制流。转换字符串为二进制流,这涉及两个步骤的操作。

第一步是将字符串转换为二进制的的值,在这一步骤中,dart内置Utf8Codec对象encode方法可以帮助我们转换字符串为二进制。

第二步使用二进制的值创建流Stream。Stream对象value函数从指定的值创建流Stream。

value函数可以接受任意类型的值。如果传递给value函数的值是二进制类型,将会返回一个二进制流Stream

最后,我们就可以使用Stream管道pipe函数传递到进程的标准输入。

在下面的示例中,我们将启动grep命令的进程,grep进程将在标准输入中读取参数搜索hello字符串。

import 'dart:io';
import 'dart:convert';

main() async {
  var grep = await Process.start('grep', ['hello']);
  Stream.value(const Utf8Codec().encode(server)).pipe(grep.stdin);
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分