Java 如何逐行复制文件并保留其原始换行符
我需要替换各种文件中的键(所有类型和换行格式)。 为此,我尝试逐行复制文件并替换行中的键。此操作有效,但原始换行符丢失 以下是我的代码,非常常见:Java 如何逐行复制文件并保留其原始换行符,java,file-io,copy,newline,Java,File Io,Copy,Newline,我需要替换各种文件中的键(所有类型和换行格式)。 为此,我尝试逐行复制文件并替换行中的键。此操作有效,但原始换行符丢失 以下是我的代码,非常常见: FileInputStream fis = new FileInputStream(file); BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); FileWriter writer = new FileWriter(tmpFile); BufferedW
FileInputStream fis = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
FileWriter writer = new FileWriter(tmpFile);
BufferedWriter out = new BufferedWriter(writer);
String line;
while ((line = reader.readLine() != null) {
String updatedLine = replaceKeys(line);
out.write(updatedLine);
out.newLine();
}
我需要逐行读取文件才能正确替换键(键由一些分隔符确定,在文件读取期间不得剪切)
问题是我的unix文件(.sh)在替换后有错误的换行符(代码在windows上运行)。只有一行的文件将更改为两行文件
问题是,在逐行复制文件时,如何保持原始文件的换行符,或者,至少,如何能够确定文件的结尾而不在末尾添加额外的行?谢谢你的帮助
编辑:删除无用的DataInputStream。您可以为此作业使用:
try(Scanner s=new Scanner(file).useDelimiter("(?<=\n)|(?!\n)(?<=\r)");
FileWriter out=new FileWriter(tmpFile)) {
while(s.hasNext()){
String line=s.next();
String updatedLine = replaceKeys(line);
out.write(updatedLine);
}
}
try(Scanner s=新的扫描仪(文件)。使用分隔符(“(“DataInputStream
”的用途是什么?你为什么不直接将FileInputStream
传递给InputStreamReader
?很好,谢谢你的提示。这是一个糟糕的复制粘贴。没有DataInputStream它工作得很好。它就像一个符咒一样工作!我在这一个上被阻止了。因为我在谷歌上找不到一个好的方法,这是一个我也可以帮助别人。非常感谢你的帮助。