2012-12-20 76 views
-4

打開文件時我想寫入文件,但不起作用。 Calendar getTime很有用,System.out.println()證明了這一點。請,任何想法,有什麼問題......?打開文件時Java實時寫入文件

主要類:

public static void main(String[] args) throws IOException { 
     // TODO code application logic here 
     CurrentTime ct = new CurrentTime(); 
    } 

CURRENTTIME類:

public class CurrentTime { 

    public OutputStream output; 
    public InputStream input; 
    public Process npp; 

    CurrentTime() throws IOException 
    { 
     Timer t = new Timer(); 
     npp = Runtime.getRuntime().exec("notepad"); 
     output = npp.getOutputStream();   

     TimerTask task = new TimerTask() { 
      @Override 
      public void run() 
      {     
       String dateStr = Calendar.getInstance(new Locale("ua", "UA")).getTime().toString(); 
       System.out.println(dateStr); 

       try { 
        output.write(dateStr.getBytes()); 
        output.flush();       
       } catch (IOException ex) {      
        Logger.getLogger(CurrentTime.class.getName()).log(Level.SEVERE, null, ex); 
       }     
      } 
     }; 
     t.schedule(task, 1000, 2000); 

    } 
} 

也許這個代碼是錯誤的一切,NP。這樣,我想在任何一方發現這一刻,這是不可能的嗎?

UPDATE:它不是實際的了,但只是一個音符,那個時候我試圖直接實現某種tailing操作的文本編輯器,現在我明白了這個想法..當初如何異常的情況下實現的當然使用其他方式。

+1

「不工作」是壞的。你如何看待它不起作用?你能指定它嗎? – looper

+0

你爲什麼認爲寫入記事本的stdin會寫入文件? **大多數** Windows應用程序甚至不關心其標準輸入/標準輸出。 –

+0

是的,我可以指定它。啓動這個程序後,記事本打開,但它不輸出任何數據,但控制檯是。 –

回答

0

有趣:

讓簡單的方式處理這一點。

1. Save a file test.txt somewhere. 
2. Open that file and keep it opened 

在Java中寫入該文件(標準代號)

FileWriter fw = new FileWriter(new FileOutputStream(new File("c:/test.txt"))); 
fw.write("ABC") 

現在到記事本文件一次。我通常使用Textpad,它會自動刷新(通過警報),因爲我們在場景後面更改了它(通過Java在您的案例中)。

我希望能澄清一點。

想要超額使用genric notepad exe文件不會影響您將寫入哪個文件。我不確定窗口是如何處理的,因爲您可以一次打開3個不同的文件,而且您期望得到哪一個通過java寫你的數據?

1

你做錯了 - 這是不可能的。 notepad在運行時絕對忽略它的輸入(像大多數GUI程序一樣)。如果你想顯示一個文本框並在其中寫入文本,只需創建一個Swing/SWT/...

如果你只是想寫入一個文件,只需創建一個新的PrintWriter並用它來寫文件: http://docs.oracle.com/javase/6/docs/api/java/io/PrintWriter.html

+0

因此,如果我理解正確,我的目標是不可能的,對吧? –

+0

@ user1918648:是的,這是不可能的。 – looper