Как я могу добавить новые строки в TXT, используя java, и без пробелов - PullRequest
1 голос
/ 28 апреля 2020

enter image description here

Когда я пишу текст в этом текстовом файле, либо между новой строкой и старой существующей строкой нет пробелов, либо есть дополнительные строки, которые испортил мои другие алгоритмы.


    public String writeStudent(String file, String name)
        {

            String txt = "";
            //set through put method

            try(FileWriter fw = new FileWriter(file + ".txt", true);
                BufferedWriter bw = new BufferedWriter(fw);

                    PrintWriter out = new PrintWriter(bw))
            {

                out.println(name + "\r\n");


                //save userinput into class1.txt

                txt ="added: " + name;

             }

            catch(IOException e)
            {
                System.out.println("error");
                e.printStackTrace();
                // detact error
            }
    return txt;
    }

Это код, который я использую для записи в txt, использование (name + "\ r \ n") дает мне дополнительные пустые строки.

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Проблема в том, что функция println автоматически добавляет новую строку в конце входной строки.

out.println(name + "\r\n"); Фактически совпадает с out.print(name + "\r\n\r\n");

Наконец, вам нужно подумать если новая строка должна быть до или после имени вашего студента.

Решение состоит в том, чтобы просто использовать print вместо println и добавить новую строку перед именем студента

Например .

Учитывая существующий текстовый файл

John Doe

, и вы хотите, чтобы новое имя добавлялось как

John Doe
Jane Doe

Новая строка фактически перед вашим именем. Это означает, что вы должны использовать что-то вроде out.print("\r\n" + name);

1 голос
/ 28 апреля 2020

Как насчет использования 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
...