gpt4 book ai didi

java - 换行符与系统换行符不同

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:51:58 24 4
gpt4 key购买 nike

我的问题:如何强制输入流将行分隔符处理为系统标准行分隔符?

我将文件读取为字符串,换行符转换为 \n 但我的 System.getProperty("line.separator");\r\n。我希望这是 portable ,所以我希望我的文件阅读器将换行符读取为系统标准换行符(无论是什么)。我怎么能强制它?这是我在 Java Helper 中的方法以字符串形式读取文件的库。

/**
* Takes the file and returns it in a string. Uses UTF-8 encoding
*
* @param fileLocation
* @return the file in String form
* @throws IOException when trying to read from the file
*/
public static String fileToString(String fileLocation) throws IOException {
InputStreamReader streamReader = new InputStreamReader(new FileInputStream(fileLocation), "UTF-8");
return readerToString(streamReader);
}

/**
* Returns all the lines in the Reader's stream as a String
*
* @param reader
* @return
* @throws IOException when trying to read from the file
*/
public static String readerToString(Reader reader) throws IOException {
StringWriter stringWriter = new StringWriter();
char[] buffer = new char[1024];
int length;
while ((length = reader.read(buffer)) > 0) {
stringWriter.write(buffer, 0, length);
}
reader.close();
stringWriter.close();
return stringWriter.toString();
}

最佳答案

您的readerToString 方法不会对行尾执行任何操作。它只是复制字符数据——仅此而已。完全不清楚您是如何诊断问题的,但该代码确实不会\n 更改为 \r\n。它必须是文件中的 \r\n - 您应该在十六进制编辑器中查看。最初是什么创建了该文件?您应该在那里查看任何换行符的表示方式。

如果您想读取行,请使用 BufferedReader.readLine() ,它将处理 \r\n\r\n.

请注意 Guava有很多有用的方法可以从阅读器读取所有数据,以及将阅读器分成几行等。

关于java - 换行符与系统换行符不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11193005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com