Java实时写入文件时,它打开'



我想在文件打开时写入数据,但它不起作用。Calendar getTime工作得不错,System.out.println()证明了这一点。拜托,你知道怎么回事吗?

主类:

 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. 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)。

我希望这能澄清一点。

要注意,尝试使用通用记事本exe并不能保证您将在哪个文件中写入。我不确定windows是如何处理的,因为你可以一次打开3个不同的文件,哪一个你会期望通过java写你的数据?

你做错了-不可能。notepad在运行时完全忽略它的输入(像大多数gui程序一样)。如果要显示文本框并在其中写入文本,只需使用Swing/SWT/…

创建一个文本框

如果你只是想写入一个文件,只需创建一个新的PrintWriter并使用它来写入文件:http://docs.oracle.com/javase/6/docs/api/java/io/PrintWriter.html

你不应该尝试用记事本写东西。查看printwwriter

相关内容

  • 没有找到相关文章

最新更新