Java:将字符串从一个文件复制到另一个文件,而不丢失';换行格式';

Java:将字符串从一个文件复制到另一个文件,而不丢失';换行格式';,java,string,copy,format,Java,String,Copy,Format,如果标题有误导性/错误,请提前表示歉意,但在花了很长一天时间练习Java之后,这是我能做的最好的了。(我的大脑在融化) 我将这段代码放在一起读取一个文件并将其复制到另一个文件中,跳过以给定字符串开头的行(BeginOfTheLineToRemove)。它实际上可以工作并删除所需的行,但由于某种原因,它忘记了\n(换行符)。将复制间距和符号。我想不出来。我真的希望有人能帮忙。来自意大利的爪哇新手的欢呼声;) 使用pw.println而不是pw.write。println在写入内容后添加新行字符。使

如果标题有误导性/错误,请提前表示歉意,但在花了很长一天时间练习Java之后,这是我能做的最好的了。(我的大脑在融化)

我将这段代码放在一起读取一个文件并将其复制到另一个文件中,跳过以给定字符串开头的行(BeginOfTheLineToRemove)。它实际上可以工作并删除所需的行,但由于某种原因,它忘记了\n(换行符)。将复制间距和符号。我想不出来。我真的希望有人能帮忙。来自意大利的爪哇新手的欢呼声;)


使用
pw.println
而不是
pw.write
。println在写入内容后添加新行字符。

使用
pw.println
而不是
pw.write
。println在写入内容后添加新行字符。

可能会对您有所帮助

BufferedReader.readLine()方法不读取任何行终止字符。因此,您的行将不包含任何终止字符。

可能会对您有所帮助


BufferedReader.readLine()方法不读取任何行终止字符。因此,您的行将不包含任何终止字符。

您正在使用
PrintWriter.write()
来写入行-默认情况下,这不会在末尾写入换行符。改为使用
println()

您正在使用
PrintWriter.write()
来写入行-默认情况下,这不会在末尾写入换行符。改为使用
println()

BufferedReader.readLine()使用换行符标识行的结尾,它返回的字符串不包含此换行符。换行符是分隔符,因此不被视为数据的一部分

为了补偿这一点,您可以在输出中添加换行符,如下所示:

while((line = br.readLine()) != null) {
    if(line.startsWith(LineToRemoveThatBeginWithThis)) continue;
    pw.write(line);
    pw.println();
}
对PrintWriter.println()的额外调用将在您写出文本行后打印一个换行符。

BufferedReader.readLine()使用换行符标识行的结尾,它返回的字符串不包含此换行符。换行符是分隔符,因此不被视为数据的一部分

为了补偿这一点,您可以在输出中添加换行符,如下所示:

while((line = br.readLine()) != null) {
    if(line.startsWith(LineToRemoveThatBeginWithThis)) continue;
    pw.write(line);
    pw.println();
}
对PrintWriter.println()的额外调用将在您写出一行文本后打印一个换行符。

文档说明:

返回:包含行内容的字符串,不包括任何行终止字符,如果已到达流的结尾,则返回null

也就是说,读取器会从字符串中删除行终止字符,因此您需要再次手动添加它们:

// \n on Linux/Mac, \r\n on Windows
String lineSep = System.getProperty("line.separator"); 
pw.write(line);
pw.write(lineSep);
文件说:

返回:包含行内容的字符串,不包括任何行终止字符,如果已到达流的结尾,则返回null

也就是说,读取器会从字符串中删除行终止字符,因此您需要再次手动添加它们:

// \n on Linux/Mac, \r\n on Windows
String lineSep = System.getProperty("line.separator"); 
pw.write(line);
pw.write(lineSep);

在回路外部获取系统的线路分离器:

String lineSeparator = System.getProperty("line.separator");
然后将其附加到您已阅读的行:

pw.write(line+lineSeparator);

在回路外部获取系统的线路分离器:

String lineSeparator = System.getProperty("line.separator");
然后将其附加到您已阅读的行:

pw.write(line+lineSeparator);