Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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打印文本文件中的转义字符_Java - Fatal编程技术网

Java打印文本文件中的转义字符

Java打印文本文件中的转义字符,java,Java,我在代码中内联了ANSI转义序列,但当我从at文本文件中读取相同的字符串时,它无法工作 双写字节(“\033[0;31;1m>帮助(?)-获取帮助\n”) (dOut=数据输出流) 这将以黑色背景打印红色文本 当从文本文件中读取完全相同的行时,它不起作用,它将该行打印为纯文本 BufferedReader menuReader = new BufferedReader(new FileReader("help.txt")); whi

我在代码中内联了ANSI转义序列,但当我从at文本文件中读取相同的字符串时,它无法工作

双写字节(“\033[0;31;1m>帮助(?)-获取帮助\n”)

(dOut=数据输出流)

这将以黑色背景打印红色文本

当从文本文件中读取完全相同的行时,它不起作用,它将该行打印为纯文本

                BufferedReader menuReader = new BufferedReader(new FileReader("help.txt"));
                while ((menuLine = menuReader.readLine()) != null) {
                    dOut.writeBytes(menuLine + "\n");
                }
                menuReader.close();

文本文件只有一行:\033[0;31;1m>帮助(?)-获取帮助

编写识别特定模式并将其转换为所需字符串的解析器。

着色语法通常特定于所使用的shell,例如,一种语法可能在Linux上的Bash shell中工作,但在Windows上的Cygwin Bash shell中会失败。此外,某些终端可能无法打印所有颜色组合,例如.黑色背景和浅灰色文本有时不起作用

根据,您必须使用unicode语法。要在白色背景上获取红色文本,请使用以下命令:

String redFg = "\u001B[31m";
String blackBg = "\u001B[40m";
System.out.println(blackBg + redFg + "> help (?) - Get help");

在您的文件中,您使用的是
\033
,它是一个八进制值,等于
\001B
十六进制。您必须将格式语法转换为Java支持的格式语法。

请将您的问题包括在内,其他人可以编译和测试它。它应该显示直接使用时它是如何生成红色文本的,以及它是如何生成的从文件中读取时仅显示纯文本。是否有文本
“\033”
(4个字符)在文件中,还是在文件中有字节0x1B?谢谢你的回答,Progman:-)文本,而不是字节。我不知道如何将0x1B放入文本中…使用您选择的任何hexeditor或通过java使用
FileOutputStream
。那么,我如何替换文本“\033”(或其他内容)代码中有字节0x1B吗?我知道如何替换子字符串,但不是字节…是的,谢谢Karol。在代码中设置颜色时效果很好,但我需要在文本文件中设置颜色:-)我用更多信息更新了问题。