Java初学者(输入/输出重定向)

时间:2018-01-21 00:56:43

标签: java redirect input output

我不知道如何在Netbeans中放置输入/输出重定向命令。我的Java教科书Daniel Liang说,以下是一个名为SentinelValue的示例程序:

*来自教科书:

5.2.5输入和输出重定向

在前面的示例中,如果要输入大量数据,则会很麻烦 从键盘输入。例如,您可以将由空格分隔的数据存储在文本文件中 input.txt,并使用以下命令运行该程序: java SentinelValue< input.txt中 此命令称为输入重定向。程序从文件输入中获取输入 .txt而不是让用户在运行时从键盘输入数据。假设内容 该文件是

2 3 4 5 6 7 8 9 12 23 32

23 45 67 89 92 12 34 35 3 1 2 4 0

该计划应该总和为518。

类似地,有输出重定向,它将输出发送到文件而不是显示 它在控制台上。输出重定向的命令是: java ClassName> output.txt的

输入和输出重定向可以在同一个命令中使用。例如,以下内容 命令从input.txt获取输入并将输出发送到output.txt: java SentinelValue output.txt

尝试运行程序以查看output.txt中的内容。

清单5.5 SentinelValue.java

 import java.util.Scanner;

   public class SentinelValue {

     /** Main method */

     public static void main(String[] args) {

   // Create a Scanner

 Scanner input = new Scanner(System.in);



 // Read an initial data

    System.out.print("Enter an integer (the input ends if it is 0): ");

    int data = input.nextInt();



 // Keep reading data until the input is 0

  int sum = 0;

  while (data != 0) {

    sum += data;



  // Read the next data

   System.out.print("Enter an integer (the input ends if it is 0): ");

     data = input.nextInt();

        }



    System.out.println("The sum is " + sum);

  }

}

那么如何将此输出保存在.txt文件中?我很迷茫。 谢谢

1 个答案:

答案 0 :(得分:0)

每个进程基本上可以默认访问3个文件:

  • stdin(标准输入文件)
  • stdout(标准输出文件)
  • stderr(标准错误文件)

在这个答案中,我只关心前两个(stdin / stdout)。 从终端/命令行创建进程时,终端通过设置正确的stdout文件告诉程序在屏幕上打印。

当您System.out.println()作为文本时,Java VM会将此文本写入stdout文件(映射到您的终端)。

当您从System.in读取时,您正在读取文件。终端默认将其设置为键盘。

因此,当您使用myProcess.exe > file.txt启动流程时,您告诉终端创建名为file.txt的文件,并将流程的stdout分配给该文件。 (myProcess.exe只是一个例子;它在Windows / MacOS / Linux上的工作方式相同)

因此,为了将输出保存在文本文件中,本书告诉您如下启动Java Process:

java ClassName > output.txt

文本对文件的实际处理方式全部由操作系统处理。