2014-01-25 102 views
0

如何重定向程序的输入流,以便它能从控制台运行,如代码中未指定文件名的main> myProgram?这是我迄今为止所拥有的。Java-重定向输入流

public static void main (String[ ] args) throws IOException { 
    BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); 
    while(in.next != null){ 
     in.read(); 
    } 
} 

我知道这将是是与System.setIn,但我不知道是怎么写它,这样主>键入后,它会检测一个文件名。

+2

您的问题不清楚。请重新说明。 – RaviH

+1

为什么你不能只在第一个地方输入数据? –

+0

不需要调用'setIn(...)'或其他任何类型的东西。 System.in将引用您的程序中没有任何操作的文件。 –

回答

0

使用标准System.inSystem.out流。

+2

...并在命令行上使用大于和小于符号的文件I/O重定向。例如:'java MyProgram < my.input > my.output' –

0

为了重定向流,它是System类的方法:setIn(),setOut(),setErr(),这将有所帮助。 现在为了重定向流你必须重定向到特定的文件类型。

例如,如果要重定向输出流,则需要使用setOut()。 setOut()接受打印流的对象,并且打印流具有带字符串的参数化构造函数,您将以此方式提供路径。

这里是链接到测试文件的程序。无论何时调用其上的println()方法,在这种情况下,流将重定向到测试文件而不是输出控制台。

import java.io.FileNotFoundException; import java.io.PrintStream;

公共类Redirect1 {

public static void main(String[] args)throws FileNotFoundException { 
    System.setOut(new PrintStream("C:\\Users\\nEW u\\Desktop\\Test.txt")); 

    System.out.println("Hello"); 
} 

}

这里是输入流的程序: -

进口java.io. *; import java.lang.System;

公共类重定向{

public static void main(String[] args)throws IOException { 
    System.setIn(new FileInputStream("C:\\Users\\nEW u\\Desktop\\dev.txt")); 
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
    String s=""; 
    while((s=br.readLine())!=null) 
    System.out.println(s); 
} 

}

我希望这有助于。对于任何进一步的查询ping我:)

+0

下面是输入流的程序: –