Java Dos 清屏

0 Share

Java Dos 清屏

如果使得 Java 命令行程序,能够清除屏幕输出。提供直接可用的文件下载,包括编译办法。

学习 Java 的过程中,经常编个控制台程序来做些测试。在命令行里运行Java程序时,清屏真是个麻烦的事情。但是不清屏,这程序实在没法看。最后还是实现了,哈哈。

先讲如何使用。

下载 cls.rar

只适合 Windows 系统。

解压之后得到 CLS.class  和 cls.dll 。把两者放到同一文件夹下(比如跟你的 class 文件放到相同目录)。在你的程序中需要清除屏幕输出时,调用方法 CLS.CLS() ,即可实现。

cls

这个是演示,Java 程序刚刚启动时候的效果。

下面开始扯淡。

哥,你这是刷屏

刚遇到这问题时候 Google 了半天。在某论坛也有人问这个问题。某人回答到:

输出100个换行试试?

然后另一人回复:

我怎么觉得你这不是清屏,像是刷屏呢?

哈哈,当时我就笑喷了。说点正经的,有个方法多数人都提到过,但是不管用:

Runtime

比如下面两种办法:

Runtime.getRuntime().exec("cmd   /c   cls");

Runtime.getRuntime().exec("exec.bat");//批处理之中有一句 cls

第一个办法打开了一个新的 DOS 窗口,并没有实现原窗口清屏。第二种我试了几次,完全没有效果。

JNI

这个还是很靠谱的,虽然有点大材小用了。之前也见有人提到挂载 DLL 文件来实现,但还是一头雾水。直到找到了《Java and the DOS "CLS" command》这篇文章。

其实如果你装好了 JDK 和 VC++,直接按照文中所描述的办法就OK 了。我做了些许改动。先建立 CLS.java:

public class CLS {
static {
System.loadLibrary("cls");
}
public native static void CLS();
}

编译过后,执行 javah CLS 来获得 CLS.h 。接着同文件夹下建立 c.cpp :

#include
#include "CLS.h"
#include 

JNIEXPORT void JNICALL Java_CLS_CLS(JNIEnv *, jclass){
system("cls");
}

好了,来执行个命令编译:

cl -IC:\j2sdk1.4.2\include -IC:\j2sdk1.4.2\include\win32 -LD c.cpp -cls.dll

这个 C:\j2sdk1.4.2 换成你的 JDK 安装目录。然后我们就拿到 CLS.class 和 cls take a look at the site here.dll 了。

背后的血泪

我先是试了几张光碟,好在有没划坏的。重新装了一下 VC++,结果丫提示我安装没成功。我一看,还真是,环境变量没设置。更糟糕的是,我装的是 java 1.6,竟然没找到 JDK 目录,现从另外机器把一堆头文件拷贝过来的。接着把所有需要的头文件、库文件统统拷贝到 C:\Program Files\Microsoft Visual Studio\VC98\Bin 目录,把各文件中的 #include <*.h> 都改成了 #include "*.h" ,嘿嘿,虽然费劲,也编译成功了。

Linux 怎么办?

我记得,在 Ubuntu 终端里面,Ctrl+H 是清屏——不过是伪清屏,不过是把滚动条拉下来而已。

记得要编译成 cls.so。

不琢磨了,睡觉去。

Comments ( 11 )

  1. Replyleafduo
    ctrl+L 是清屏 clear 也是
    • Reply卢达
      恩,我记错了,是 Ctrl+L。不过 clear 和它一样,是伪清屏。
  2. Reply胡戈戈
    太牛了你
  3. Reply会律博客
    睡觉是王道哇!
  4. Replywelee
    都开始折腾 Java 了,太牛了你!!
    • Reply卢达
      汗,我可不敢称牛。这个清屏的问题几年前就被人解决了,我也是才学到
  5. Replyjo32
    我在netbean里面以CLS.class和CLS.dll作为库添加进去,但是编译过不了。 然后在SRC或者class文件夹里面添加此两文件,编译还是过不了。
    • Reply卢达
      写个测试类自己编译下看看,应该没有问题。至于 netbean ,我也不熟。
  6. Replycaiweiqun
    CLS.class 这个能不能看看源代码啊 我十分感谢啊?
    • Reply卢达
      这个,文中就有的啊
  7. Replyfelix
    这个应该对你有帮助 http://blog.csdn.net/Jinuxwu/archive/2010/06/12/5666202.aspx

Leave a reply

Your email address will not be published.