我希望Java程序有不同的默认设置(冗长,可能支持的彩色输出),这取决于它的使用。在C中,有一个isatty()函数,如果文件描述符连接到终端,该函数将返回1,否则返回0。在Java中有没有等价物呢?我还没有在InputStream或PrintStream的JavaDoc中看到任何东西。
发布于 2009-09-10 07:26:42
如果您的应用程序已连接,则System.console()将返回连接到的控制台,否则将返回null
。(请注意,它只在JDK 6及更高版本中可用。)
发布于 2015-04-03 11:07:41
您可以使用jnr-posix库从Java调用原生posix方法:
import jnr.posix.POSIX;
import jnr.posix.POSIXFactory;
import java.io.FileDescriptor;
POSIX posix = POSIXFactory.getPOSIX();
posix.isatty(FileDescriptor.out);
发布于 2018-09-27 05:47:29
如果你不想自己编译C源代码,你可以使用Jansi库。它比jnr-posix小得多。
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>1.17.1</version>
</dependency>
..。
import static org.fusesource.jansi.internal.CLibrary.isatty;
...
System.out.println( isatty(STDIN_FILENO) );
https://stackoverflow.com/questions/1403772
复制相似问题