2012-11-03 72 views
1

我有一個交互式java程序,它接受來自用戶的輸入...現在我需要將已經在屏幕上打印的任何輸出重定向到文件?是可能的。如何將交互式程序的輸出重定向到文件?

從java文檔我得到的方法「System.setOut(PrintStream ps);」但我不知道如何使用這種方法?

E.g.我有一個程序爲:

public class A{ 
    int i; 
    void func() 
    { 
     System.out.println("Enter a value:"); 
     Scanner in1=new Scanner(System.in); 
     i= in1.nextInt(); 
     System.out.println("i="+i); 
    } 
} 

現在我想重定向下面給出一個文件的輸出:在java.io包中

Enter a value: 
1 
i=1 
+0

如果你不需要編程方式做到這一點,你可以重定向命令行輸出(同時互動,你不會看到輸出無論如何,如果你願意,你可以用'tee'或類似) – ShinTakezou

+0

@Jannat Arora,你知道嗎,如果你將標準輸出重定向到一個文件,那麼用戶將不會有cl他應該做什麼(例如輸入一個值:')?此外,重定向輸入甚至沒有考慮到你的初始問題 – Alexander

+0

@Alexander對不起,第一個問題......但這是我的實際問題......有人可以幫助 –

回答

2

你可以這樣做:

System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("output.txt")))); 

寫的東西到一個文件中,有多種方式,你可以看看Reading, Writing, and Creating Files教程。

在你的情況,如果你想打印什麼是文件在屏幕上也是如此,即使是用戶輸入,你可以這樣做:

void func(){                        
    try {                         
    PrintStream out=new PrintStream(new BufferedOutputStream(new FileOutputStream("output.txt")));  
    System.out.println("Enter a value:");                 
    out.println("Enter a value:");                  
    Scanner in1=new Scanner(System.in);                 
    int i= in1.nextInt();                     
    out.println(i);                      
    System.out.println("i="+i);                   
    out.println("i="+i);                     
    out.close();                       
    } catch (FileNotFoundException e) {                  
    System.err.println("An error has occurred "+e.getMessage());           
    e.printStackTrace();                     
    } 
} 
+0

簡單但功能強大:P – madhairsilence

+0

非常感謝.. 。你可以寫一個示例代碼...來說明它是如何工作的...請 –

+0

@JannatArora查看我更新的答案。 – dan

0

類是專爲這一點。我建議你看看java.io package

編輯完成後。

File file = new File("newFile.txt"); 
    PrintWriter pw = new PrintWriter(new FileWriter(file)); 
    pw.println("your input to the file"); 
    pw.flush(); 

    pw.close() 
0

在這裏你去:

// all to the console  
     System.out.println("This goes to the console"); 
     PrintStream console = System.out; // save the console out for later. 
    // now to the file  
     File file = new File("out.txt"); 
     FileOutputStream fos = new FileOutputStream(file); 
     PrintStream ps = new PrintStream(fos); 
     System.setOut(ps); 
     System.out.println("This goes to the file out.txt"); 

    // and back to normal 
     System.setOut(console); 
     System.out.println("This goes back to the console"); 
相關問題