(java)检测转换为字符的InputStream中的回车

(java)检测转换为字符的InputStream中的回车,java,inputstream,Java,Inputstream,所以我在写一个程序,从串口获取输入。 像这样: String p = "COM3"; SerialPort in = SerialPort.getCommPort(p); in.openPort(); InputStream d = in.getInputStream(); 为了从port.stream读取数据,我使用了以下代码 do { System.out.print((char)d.r

所以我在写一个程序,从串口获取输入。 像这样:

String p = "COM3";

    SerialPort in = SerialPort.getCommPort(p);
    in.openPort();

    InputStream d = in.getInputStream();
为了从port.stream读取数据,我使用了以下代码

          do
            {
                System.out.print((char)d.read());
                counter++;

            }while(counter < 303);
do
{
System.out.print((char)d.read());
计数器++;
}而(计数器<303);
仅供参考:来自串行端口的数据来自条形码扫描仪,该程序的目的是扫描驾驶执照

数据清晰易读,但流中似乎有回车符或新行字符,导致数据被分割成新行,这很好,但我想知道如何检测这些字符,以便将每个新行/回车符解析为字符串/字符串数组条目。我做了一些搜索,但我找不到我正在寻找的答案

我还尝试将流输出到一个.txt文件,但没有多大帮助。在记事本中打开文件时,流数据显示为一行。但是,在我的文件浏览器预览屏幕中,数据显示方式与在我的控制台中相同,每个单独的数据都有自己的行


非常感谢您的帮助。

您需要查找两个字符:新行
\n
和回车
\r

char next = (char)d.read();
if(next == '\r') {
    System.out.print("\\r");
} else if(char == '\n') {
    System.out.print("\\n");
} else {
    System.out.print(next);
}
您必须退出反斜杠,否则它将实际打印一个新行/回车符并分解文本,而您确实希望它只打印
\r
\n
。如果您以后必须重新阅读此内容,则需要考虑这样一个事实,即文本中需要2个字符来表示这些内容。

如果您有一个字符someChar=(char)d.read(),那么检测回车的唯一最佳方法就是检查(someChar='\r')(CR=回车字符)或(someChar='\n'))(NL=换行字符)