2014-01-25 143 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

下面是輸入流的程序: –