我有一个linux服务器和许多具有许多操作系统的客户端。服务器从客户端获取输入文件。 Linux具有行结束符LF,而Mac具有行结束符CR,并且
Windows的行尾字符为CR + LF
服务器需要作为行字符LF的结尾。使用java,我想确保该文件将始终使用linux eol char LF。我该如何实现?
最佳答案
结合两个答案(由Visage和eumiro撰写):
编辑:阅读评论后。线。System.getProperty("line.separator")
没用了。
在将文件发送到服务器之前,请打开它,替换所有EOL并写回
确保使用DataStreams这样做,并以二进制形式编写
String fileString;
//..
//read from the file
//..
//for windows
fileString = fileString.replaceAll("\\r\\n", "\n");
fileString = fileString.replaceAll("\\r", "\n");
//..
//write to file in binary mode.. something like:
DataOutputStream os = new DataOutputStream(new FileOutputStream("fname.txt"));
os.write(fileString.getBytes());
//..
//send file
//..
replaceAll
方法有两个参数,第一个是要替换的字符串,第二个是替换字符串。但是,第一个被视为正则表达式,因此,'\'
以此方式进行解释。所以:"\\r\\n" is converted to "\r\n" by Regex
"\r\n" is converted to CR+LF by Java
关于java - 如何在Java中规范EOL字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3776923/