当前位置: 首页 > news >正文

java替代重定向_Java 重定向与管道

前言

在学习 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

运行后终端窗口中不会出现任何输出:它们都被直接写入 " > " 号之后的文件中了。

3fe4ceabfdcf

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. 提示符 “ | ”

将一个程序的输出重定向为另一个程序的输入叫做 管道。

例如,这条命令

3fe4ceabfdcf

pipe

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

相关文章:

  • java五子棋聊天功能_Java基于享元模式实现五子棋游戏功能实例详解
  • bandpass filter java_带通滤波器设计(Bandpass filter design).doc
  • java的位桶是什么,hashmap中的存储桶究竟是什么?
  • 缴费java代码_基于jsp的物业管理缴费系统-JavaEE实现物业管理缴费系统 - java项目源码...
  • java实体类间的转换_java 实体类集合转换和实体类转换
  • mysql碎片整理 提速_MysqL碎片整理优化
  • 一张纸对折13次JAVA_一张纸最多折叠8次?她把纸折叠了13次后,发生了什么?
  • plsq卸载 删除注册表、_oracle安装及使用常见问题及解决方案
  • 陈伟伟java_java开发学习笔记之图书管理系统
  • java的list集合详解_【java集合】List详解
  • java bean 命名_fastjson(javabean命名)
  • php按钮控制css命令,php实现的CSS更新类实例
  • sigbus php,php-fpm里常用参数优化解析
  • php表单提交防注入,php表单提交数据的验证处理(防SQL注入和XSS攻击等)
  • java异常自定义返回信息,java – 捕获所有异常并返回Jersey中的自定义错误
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • java正则表式的使用
  • js学习笔记
  • Swoft 源码剖析 - 代码自动更新机制
  • 当SetTimeout遇到了字符串
  • 高程读书笔记 第六章 面向对象程序设计
  • 聊聊flink的TableFactory
  • 前端路由实现-history
  • 算法系列——算法入门之递归分而治之思想的实现
  • 问题之ssh中Host key verification failed的解决
  • 想写好前端,先练好内功
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序01:wepy框架整合iview webapp UI
  • 学习JavaScript数据结构与算法 — 树
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 译有关态射的一切
  • ​520就是要宠粉,你的心头书我买单
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​什么是bug?bug的源头在哪里?
  • #Ubuntu(修改root信息)
  • (1)虚拟机的安装与使用,linux系统安装
  • (8)STL算法之替换
  • (C语言)fgets与fputs函数详解
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET4.0并行计算技术基础(1)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • :“Failed to access IIS metabase”解决方法
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [BZOJ4010]菜肴制作
  • [CLR via C#]11. 事件
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [GYCTF2020]Ez_Express