【问题标题】:Java realtime writing file when it's openedJava在打开文件时实时写入文件
【发布时间】:2012-12-07 22:23:52
【问题描述】:

我想在文件打开时将数据写入文件,但它不起作用。 Calendar getTime 效果很好,System.out.println() 证明了这一点。请问,有什么问题吗...?

主类:

 public static void main(String[] args) throws IOException {
        // TODO code application logic here
        CurrentTime ct = new 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。就这样,我想从任何一方发现这一刻,这根本不可能吗?

更新:这不再是实际的了,只是为了说明,当时我试图直接对文本编辑器实现某种tailing 操作,现在我明白这个想法有多不正常了..当然必须使用完全不同的方式来实现。

【问题讨论】:

  • “不起作用”是不好的。你怎么看它不起作用?可以指定吗?
  • 为什么你认为写入记事本的标准输入会写入文件? 大多数 Windows 应用程序甚至都不关心它们的标准输入/标准输出。
  • 是的,我可以指定。启动此程序后,记事本打开但没有输出任何数据,但控制台是。
  • 其实“我做不到”会更好。

标签: java file runtime real-time outputstream


【解决方案1】:

有趣:

让我们以简单的方式处理这个问题。

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写的???

【讨论】:

    【解决方案2】:

    你做错了 - 这是不可能的。 notepad 在运行时绝对会忽略它的输入(就像大多数 GUI 程序一样)。如果您想显示一个文本框并在其中写入文本,只需使用 Swing/SWT/...创建一个即可

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

    【讨论】:

    • @user1918648:是的,这是不可能的。
    【解决方案3】:

    您不应该尝试通过记事本书写。查看PrintWriter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多