美文网首页程序员
Java 重定向与管道

Java 重定向与管道

作者: Yjnull | 来源:发表于2018-06-06 11:39 被阅读13次

前言

在学习 Sedgewick《算法4》 的第一章过程中,弥补了很多基础知识。在此做个简单的记录。

重定向

标准输入输出使我们能够利用许多操作系统都支持的命令行的扩展功能。只需要向启动程序的命令中加入一个简单的提示符,就可以将它的标准输入 重定向 至一个文件。文件的内容既可以永久保存,也可以作为另一个程序的输入,简单来说就是下面的例子:

1. 提示符 “ > ”
  • RandomSeq是一个生成随机数的测试代码,其中 StdOut 、StdRandom 都是书中提供的封装好的API,一个封装了标准输出,另一个封装了随机数的相关方法。代码如下
package edu.princeton.cs.yytest;

import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.StdRandom;

public class RandomSeq {
    public static void main(String[] args) {

        int N  = Integer.parseInt(args[0]);
        double lo = Double.parseDouble(args[1]);
        double hi = Double.parseDouble(args[2]);
        for (int i = 0; i < N; i++) {
            double x = StdRandom.uniform(lo, hi);
            StdOut.printf("%.3f \n", x);
        }
    }
}
  • 当我们运行时,会将生成的 N 个随机数输出在控制台上,而通过重定向可以将 N 个随机数输出至一个文件中,例如
D:\codes_learn\algs4\out>java edu.princeton.cs.yytest.RandomSeq 10 100.0 200.0 > data2
  • 运行后终端窗口中不会出现任何输出:它们都被直接写入 " > " 号之后的文件中了。


    RandomSeq运行结果
2. 提示符 “ < ”
  • 既然 " > " 是输出,那么相应的 " < " 就是输入了,它代表可以从指定的文件中读取数据,来当作程序的输入。
  • Average是一个求平均数的程序,部分代码如下
public static void main(String[] args) { 
        int count = 0;       // number input values
        double sum = 0.0;    // sum of input values

        // read data and compute statistics
        while (!StdIn.isEmpty()) {
            double value = StdIn.readDouble();
            sum += value;
            count++;
        }

        // compute the average
        double average = sum / count;

        // print results
        StdOut.println("Average is " + average);
    }
  • 运行如下命令,这里的 data2 就是上面随机数生成的数据,算出这些随机数的平均值。
D:\codes_learn\algs4\out>java edu.princeton.cs.algs4.Average < data2
  • 运行结果
Average is 161.7387
3. 提示符 “ | ”
  • 将一个程序的输出重定向为另一个程序的输入叫做 管道

  • 例如,这条命令


    pipe
  • 这条命令将 RandomSeq 的标准输出和 Average 的标准输入指定为同一个流。它的效果就像在 Average 运行时 RandomSeq 将它生成的数字输入了终端窗口。

相关文章

  • Java 重定向与管道

    前言 在学习 Sedgewick《算法4》 的第一章过程中,弥补了很多基础知识。在此做个简单的记录。 重定向 标准...

  • Windows PowerShell 学习笔记其二(变量与控制语

    重定向与管道 重定向 可以借助管道符和 Out-File 命令将某个命令的输出内容重定向至文本文件中。 如:Get...

  • 第07章重定向管道

    输出重定向案例 > < 脚本中使用重定向 2.输入重定向及结合案例 管道 | 重定向和管道的符号对比。重定向输出到...

  • 管道命令

    参考linux shell 管道命令(pipe)使用及与shell重定向区别、管道命令 管道命令操作符是:”|”,...

  • 命令输入输出格式:【重定向命令 和 管道命令】\【用选项指定】

    【输入输出】格式 - 重定向 和 管道 简介 重定向命令 三大通用格式 重定向命令举例 管道命令 通用格式 管...

  • 重定向

    输出重定向 输入重定向 错误重定向 管道 shell中特殊符号

  • 管道与重定向

    管道与重定向 设置tom的密码为passecho "pass" | passwd --stdin tom 将输出保...

  • 生信人的Linux14-24

    Liunx Day15:管道和重定向 管道和重定向:> < >> << Linux: >:覆盖输出 注意文件/t...

  • windows DOS批处理.bat

    批处理符号简介 回显屏蔽 @ 重定向1 >与>> 重定向2 < 管道符号 | 转义符 ^ 逻辑命令符包括:&、&&...

  • PowerShell入门

    PowerShell快捷键 重定向与管道 重定向:命令的输出保存到文件中,'>'为覆盖,'>>'追加如"Power...

网友评论

    本文标题:Java 重定向与管道

    本文链接:https://www.haomeiwen.com/subject/lahbsftx.html