Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Windows 7中处理大型控制台输出?_Java_Python_Winapi_Windows 7_Console - Fatal编程技术网

Java 如何在Windows 7中处理大型控制台输出?

Java 如何在Windows 7中处理大型控制台输出?,java,python,winapi,windows-7,console,Java,Python,Winapi,Windows 7,Console,我正在使用一个基于Java的应用程序。当它启动时,它打开一个控制台并在那里写入输出 但是,输出有时太大,不适合ConsoleEE窗口(console窗口最多有10000行),输出要大10倍以上 我已经试过下载其他控制台应用程序(比如conemu),但是最大行数(大约32760行)太少了 我的电脑上有Ultra Edit,它可以捕获DOS命令输出,但在调试程序时,我无法从简单的文本编辑器对话框启动调试会话 现在我只剩下几个解决方案: 将已运行进程的控制台窗口的输出重定向到我的系统上的本地文件 但

我正在使用一个基于Java的应用程序。当它启动时,它打开一个控制台并在那里写入输出

但是,输出有时太大,不适合ConsoleEE窗口(console窗口最多有10000行),输出要大10倍以上

我已经试过下载其他控制台应用程序(比如conemu),但是最大行数(大约32760行)太少了

我的电脑上有Ultra Edit,它可以捕获DOS命令输出,但在调试程序时,我无法从简单的文本编辑器对话框启动调试会话

现在我只剩下几个解决方案:

  • 将已运行进程的控制台窗口的输出重定向到我的系统上的本地文件
  • 但是,请找到另一个不受预定义值限制的控制台仿真工具
  • 自己开发sych控制台仿真工具(最好是Python、Java或Visual Basic),但为了做到这一点,我需要从Windows 7 API了解如何开始这样做
有人能把我带到正确的轨道上吗


谢谢

如果您所说的是Java应用程序,那么您可以将启动包封装在自己的类中,将
System.out
System.err
替换为基于该类的内容,并将其打印到控制台(您从System.out的值之前保存的)和您设置的日志文件中

像这样:

public class LogWrapper {
    public static void main(String[] args) {
        PrintStream out = System.out;
        PrintStream err = System.err;

        System.setOut(new TeePrintStream(out, new PrintStream("system.out.log")));
        System.setErr(new TeePrintStream(err, new PrintStream("system.err.log")));

        the.original.ClassYouWereCalling.main(args);
    }
}

注意:
TeePrintStream
您仍然需要执行…

我只是将所有内容发送到一个文件中。这有什么问题吗?你能编辑java应用程序吗?依我看,如果你的输出超过1000行,标准输出就不是办法。。。我会将其存储在一个文件中,如果需要stdout,您可以将其拆分为10000行的块(如linux中的
more
less
),应用程序总是分配一个新控制台,还是从命令提示符启动时会重用控制台?如果是后者,只需使用
操作符将输出重定向到文件。