Java命令行的 重定向 与 管道(IDEA配置重定向功能读取文件的数据作为输入,并输出到指定文件)

在学习《算法》第四版中了解到 重定向 和 管道的知识,这里写个博客算做个笔记,并用IDEA执行了书上的代码,了解了文件重定向输入输出的知识。总结如下:

重定向

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

提示符 “ > ”

例如:
java RandomSeq 1000 100.0 200.0 > data.txt

将标准输出重定向到一个文件:
在这里插入图片描述

提示符 “ < ”

这个命令表示标准输出流不被打印到终端窗口,而是被写入到一个叫data.txt的文件中。每次调用打印输出的函数就会向文件中追加一段文本。终端不会有任何输出,直接被写入到 “<” 后的文件中 。

类似,也可以重定向标准输入以使从文件中而不是终端应用程序中读取数据:

会从文件data.txt中读取数值并计算它们的平均值。" < "是一个提示符,它告诉操作系统读取文本data.txt作为输入流而不是在终端窗口等待用户的输入

例如:
java Average < data.txt

将一个文件重定向为标准输入:
在这里插入图片描述


管道

提示符 “ | ”

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

例如:
java RandomSeq 1000 100.0 200.0 | java Average

将一个程序的输出重定向为另一个程序的输入
在这里插入图片描述

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

实际顺序取决于操作系统:①它可能会先运行RandomSeq 并产生一些输出,然后再运行Average来消耗这些输出
②可以先运行Average,直到它需要一些输入然后再运行RandomSeq 来产生一些输出。


IDEA配置重定向功能读取文件的数据作为输入,并输出到指定文件

1. IDEA重定向输入的配置(windows)

% java BinarySearch tinyW.txt < tinyT.txt

解释:从tinyT.txt文件中读取一系列的数值,运行在BinarySearch这个类的main方法上,tinyW.txt作为args[]数值的第一个参数传递进去。

代码:BinarySearch.java

package cap_1_1;/**
 * Copyright (C), 2019-2020
 * author  candy_chen
 * date   2020/8/7 21:45
 * version 1.0
 * Description: 二分查找
 *  重定向的输件为 tinyT.txt tinyW.txt
 *  对比两个文件中的数是否相同 把不同的数通过二分查找的方式找出,并输出在控制台上
 *
 */

import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

import java.util.Arrays;

/**
 * 二分查找
 */
public class BinarySearch {
    
    
    public static int rank(int key,int[] a){
    
    
        int lo = 0;
        int hi = a.length - 1;
        while (lo <= hi){
    
    
            int mid = lo + (hi - lo) / 2;
            if (key < a[mid])
                {
    
    
                    hi = mid - 1;
                }
            else if (key > a[mid])
                {
    
    
                    lo = mid + 1;
                }
            else
                return mid;
        }
        return -1;
    }

    public static void main(String[] args) {
    
    
        In in = new In(args[0]);
        int[] whitelist = in.readAllInts();
        Arrays.sort(whitelist);
        while(!StdIn.isEmpty()){
    
    
            int key = StdIn.readInt();
            if (rank(key,whitelist) == -1){
    
    
                StdOut.println(key);
            }
        }
        System.out.println("load");
    }
}

(1)保存你的测试数据文件在任意目录下,我这里把tinyT.txt和tinyW.txt保存在工程的testcase目录下。
在这里插入图片描述
(2)点击 Run -> Edit Configurations
在这里插入图片描述

  • 对于RandomSeq.java程序来说,程序入参是 50 20.0 30.0
    在这里插入图片描述
  • 对于BinarySearch.java来说,程序入参是两个文件

(3)Program arguments:指定tinyW.txt文件的路径

(4)Redirect input from:指定重定向输入文件tinyT.txt的路径

在这里插入图片描述
在这里插入图片描述
找出两个文件中不同的数,并输出!

1. IDEA重定向输出的配置(windows)

将标准输出重定向到一个文件

% java RandomSeq 50 20.0 30.0 < randomresult.txt

图解举例
% java RandomSeq 5 100.0 200.0 < randomresult.txt
把控制台输出的结果导出到文件 randomresult.txt中
在这里插入图片描述

(1)Program arguments:设置入参
在这里插入图片描述
(2)save console output to file: 指定输出的文件路径
在这里插入图片描述
执行结果:
在这里插入图片描述


说明:作者根据网络资料进行搜索学习,理解整理 若有侵权联系作者

如有需要在Eclipse配置重定向功能,请移步到https://www.jianshu.com/p/cbcee3e0e983

猜你喜欢

转载自blog.csdn.net/qq_35655602/article/details/107946184
今日推荐