0

私は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)」のような入力データを使用する場合にうまく機能します。

>0100
41 00 BE 1F B8 10 

>0101
41 01 00 07 65 00 

しかし、生のコードの変換に問題があります。

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

したがって、基本的に、問題は、^ Mで新しいデータ行を作成するために、reader.readlineセットに行区切り文字が必要なことです。どうすればいいのかよくわかりません。

4

3 に答える 3

1

ファイル全体を 1 行で読み取り、String.split("^M") を使用して分割して、それぞれが「行」を表す文字列の配列を作成し、配列の各要素を個別に処理できます。

于 2010-06-24T00:38:00.877 に答える
1

readLine()行末を構成するものについてかなり特殊です。read()代わりに使用してください。

于 2010-06-24T00:39:19.440 に答える
0
line.replace("\r", "\n")
于 2010-06-24T00:38:30.180 に答える