0

我从 GWT 中读取了一个文本文件“myFile.txt”,如下所示。问题是我在“输入”字符串中得到不同的结果,具体取决于服务器:

  • 如果我从 Eclipse Indigo 本地服务器运行(调试),“输入”在末尾包含字符“\r”和“\n”。
  • 如果我从 Google App Engine 运行它,“输入”仅包含结尾字符“\n”,因此 input.length 中少了一个字符。

为什么会发生这种情况,我怎么会有同样的行为?

谢谢

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

因为不同操作系统上的行分隔符不同。这就是这样System.getProperty("line.separator")做的。

在 Windows 上是\r\n\(两个字符),而在 Linux 上是\n(一个字符)。看这里。.

于 2012-08-12T22:05:34.423 回答