使用scala.sys.process包和系统交互
在Java中我们可以使用Runtime.getRuntime().exec();来和系统交互。这个API过于底层,exec返回一个代表进程的对象,然后从中读取执行结果或者错误信息。并且如果不关心进程的输出,而没有把输入结果重定向到/dev/null,超过输出结果的buffer就会阻塞。
scala.sys.process提供了shell的和系统交互的DSL,包括执行命令、逻辑操作、重定向、管道等操作。
使用!来执行外部命令:
如果没有参数,直接输出到标准输出或者标准错误输出
你可以传递Logger参数给!
如果想保存到变量中:
使用逻辑操作#&&,#||
cmd1 #&& cmd2
cmd1 #|| cmd2
使用管道:
cmd1 #| cmd2
例子:
使用重定向:
scala的重定向不仅可以从定向普通的文件,还可以把网络上的文件进行重定向到本地:
a #< url or url #> a
例子:
使用cat:
当然这一切的操作时通过字符串操作和执行命令的!、!!操作符完成的。