如何使用java在txt中添加新行,并且没有空格

如何使用java在txt中添加新行,并且没有空格,java,file,text-files,filewriter,bufferedwriter,Java,File,Text Files,Filewriter,Bufferedwriter,当我在这个txt文件中写入文本时,要么新字符串和旧的现有字符串之间没有空格,要么有多余的行,这会打乱我的其他算法 公共字符串writeStudent(字符串文件、字符串名称) { 字符串txt=“”; //贯通法 try(FileWriter fw=newfilewriter(file+“.txt”,true); BufferedWriter bw=新的BufferedWriter(fw); PrintWriter out=新的PrintWriter(bw)) { out.println(名称

当我在这个txt文件中写入文本时,要么新字符串和旧的现有字符串之间没有空格,要么有多余的行,这会打乱我的其他算法


公共字符串writeStudent(字符串文件、字符串名称)
{
字符串txt=“”;
//贯通法
try(FileWriter fw=newfilewriter(file+“.txt”,true);
BufferedWriter bw=新的BufferedWriter(fw);
PrintWriter out=新的PrintWriter(bw))
{
out.println(名称+“\r\n”);
//将用户输入保存到class1.txt中
txt=“添加:”+名称;
}
捕获(IOE异常)
{
System.out.println(“错误”);
e、 printStackTrace();
//偏差
}
返回txt;
}

这是我用来在txt中编写的代码,使用(name+“\r\n”)会给我额外的空行。

使用
BufferedWriter
而不是PrintWriter怎么样

这是我的示例代码。请尝试下面的测试代码

import java.io.*;

public class Stackoverflow {
    public static void main(String[] args) {
        File file = new File("C:\\test.txt");
        OutputStream outputStream = null;
        Writer writer = null;
        BufferedWriter bufferedWriter = null;

        try {
            outputStream = new FileOutputStream(file);
            writer = new OutputStreamWriter(outputStream);
            bufferedWriter = new BufferedWriter(writer);

            bufferedWriter.write("Hello");
            bufferedWriter.write("\r\n");
            bufferedWriter.write("\r\n");
            bufferedWriter.write("Bye");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (bufferedWriter != null) {
                try {
                    bufferedWriter.close();
                } catch (Exception ignore) {

                }
            }

            if (writer != null) {
                try {
                    writer.close();
                } catch (Exception ignore) {

                }
            }

            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (Exception ignore) {

                }
            }
        }

    }
}
输出

Hello

Bye

问题是,
println
函数会自动在输入字符串的末尾添加新行

out.println(名称+“\r\n”)
实际上与out.print(name+“\r\n\r\n”)相同

最后,您需要考虑新行是否需要在学生姓名之前或之后

解决方法是简单地使用
print
而不是
println
,并在学生姓名前添加新行

比如说

给定现有文本文件

John Doe
您希望添加一个新名称作为

John Doe
Jane Doe

换行符实际上在名称输入之前。这意味着您应该使用类似于
out.print(“\r\n”+name”)的内容

它起作用了,但也删除了文件中以前的内容@Han如果不想删除以前的内容,请先读取文件,然后将内容保存到StringBuffer(或StringBuilder,字符串任意类型)。阅读完所有内容后,附加你想写的内容。参考: