0

GWTから、以下のようにテキストファイル「myFile.txt」を読み取りました。問題は、サーバーに応じて「入力」文字列で異なる結果が得られることです。

  • Eclipse Indigoローカルサーバー(デバッグ)から実行した場合、「input」の最後に文字「\r」と「\n」が含まれます。
  • Google App Engineから実行すると、「input」には末尾の文字「\ n」のみが含まれるため、input.lengthが1文字少なくなります。

なぜこれが起こるのですか、そしてどうすれば同じ振る舞いをすることができますか?

ありがとう

String input=readFromFile("myFile.txt");

public String readFromFile(String fileName) {
  File file = new File(fileName);
  StringBuffer contents = new StringBuffer();
  BufferedReader reader = null;
  try {
    reader = new BufferedReader(new FileReader(file));
    String text = null;
    while ((text = reader.readLine()) != null) {
    contents.append(text).append(System.getProperty("line.separator"));
    }
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  } finally {
    try {
      if (reader != null) {
        reader.close();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  contents.deleteCharAt(contents.length()-2); // Remove to make it work in GAE
  contents.deleteCharAt(contents.length()-1);
  return contents.toString();
}
4

1 に答える 1

0

行区切り記号はOSによって異なるためです。これが何をするかSystem.getProperty("line.separator")です。

Windowsでは\r\n\(2文字)、Linuxでは\n(1文字)です。こちらをご覧ください。

于 2012-08-12T22:05:34.423 に答える