Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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 如何将^M拆分为单独的行?_Java_Line_Delimiter - Fatal编程技术网

Java 如何将^M拆分为单独的行?

Java 如何将^M拆分为单独的行?,java,line,delimiter,Java,Line,Delimiter,我是java编程新手。我有一个程序,是我写的,用来解释我车上的数据。我在使用原始数据而不是熟数据方面遇到了问题 public static void readFile(String fromFile) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(fromFile)); //... Loop as long as there are input lines.

我是java编程新手。我有一个程序,是我写的,用来解释我车上的数据。我在使用原始数据而不是熟数据方面遇到了问题

    public static void readFile(String fromFile) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(fromFile));

    //... Loop as long as there are input lines.
    String line = null;

    while ((line=reader.readLine()) != null )  {
          if (line.length() >= 2) { 

               Status.LineToken = new StringTokenizer (line);     
               Status.CheckToken = Status.LineToken.nextToken();
               Log.level1(line);
               if ( Status.CheckToken.contains("41")) {
                Mode01.modeSwitch();
               } else if (Status.CheckToken.contains("42")) {
                Mode02.modeSwitch();
               } else if ( Status.CheckToken.contains("43")) {
                Mode03.modeSwitch();                     
               } else if (Status.CheckToken.contains("44")) {                    
                Mode04.modeSwitch();                          
               } else if ( Status.CheckToken.contains("45")) {
                   Mode05.modeSwitch();
               } else if ( Status.CheckToken.contains("46")) {
                //is there a mode 6?
               } else if ( Status.CheckToken.contains("47")) {
                //is there a mode 7?
               } else if ( Status.CheckToken.contains("48")) {
                // mode 8 is for control of a vehicle.  Unknown params at this time.
               } else if ( Status.CheckToken.contains("49")) {
                Mode09.modeSwitch();                      
               } else if (line.endsWith(">")) {
                 //Send data to OBD unit
               } else if (Status.LineToken != null) {
                //blank line catch
               }
          }
    }
    reader.close();  // Close to unlock.
    newDataIsAvailable = true;
}
当我使用像“FileReader(fromFile)”这样的输入数据时,上面的代码非常有效:

但我在转换原始代码时遇到问题:

^M^M>0100^M41 00 BE 1F B8 10 ^M^M>0101^M41 01 00 07 65 00 

因此,基本上,问题是我需要在reader.readline集合上使用一个行分隔符,以便在^M处创建一行新行数据。我不确定如何执行此操作。

您可以将整个文件读取一行,然后使用String.split(^M)将其拆分,以创建一个字符串数组,每个字符串表示一条“行”然后分别处理数组中的每个元素。

对于如何构成行尾是一个相当特殊的问题。请改用
read()

为清楚起见,^M表示回车字符'\r'
line.replace("\r", "\n")
line.replace("\r", "\n")