Java 每次调用时将新行写入文件的方法

Java Method to Writer a new line to file each time called

我正在尝试创建一个 java 方法,该方法将写入已创建的 CSV 文件。每次从 class 调用该方法时,它应该附加来自 class 的所有字段,用逗号分隔,然后跳到下一行。

我的 class 整体看起来像:

Student bob = new Student("Bob", "Johnson", "10111990", "B+");
// call bob on the addStudentInfo:
bob.addStudentInfo(); 
//this should add to the file student.txt with a line containing the 4 fields. 

编辑:哎呀,没有提出问题,虽然你真的很想以最居高临下的方式回答它,谢谢。

我想知道应该写哪一行来做到这一点。就像,我不想复制粘贴我的整个代码,因为我无法共享所有代码。基本上,我拥有可以实际写入文件、创建文件等的部分。 .我只需要在代码中跳过该文件中的一行到下一行。

以下将学生记录附加到文件中。不考虑旧内容。

public class Student {

    private static final char SEPARATOR = ',';
    private static final String NEWLINE = "\r\n";
    private static final Charset CHARSET = StandardCharsets.UTF_8;

    public void addStudentInfo() throws IOException {
        Path path = Paths.get(".../student.txt");
        StringBuilder sb = new StringBuilder();
        if (!Files.exists(path)) {
            sb.append("\uFEFF")
                .append("First name").append(SEPARATOR)
                ...
                .append(NEWLINE);
        }
        sb.append(...).append(SEPARATOR).append(...).append(NEWLINE);
        Files.write(path,
            Collections.singletonList(sb),
            CHARSET,
            StandardOpenOption.CREATE, StandardOpenOption.APPEND);
    }

这使用 Windows line-ending 和 UTF-8 编码。因此,此应用程序在每台计算机上都会呈现相同的文件格式,无论是 Linux、中国还是其他任何地方。

当文件为空时,写入 header 行。 在那种情况下,作为第一个字符,Unicode BOM 字符(zero-width space)被写为 U+FEFF。 这会将文件标记为 Unicode,否则 Windows 将采用当前的 Windows ANSI 编码,该编码因地区而异。 (但是 BOM 是可选的、丑陋的、不可见的,并且在读取所有内容时会造成严重破坏。)

StringBuilder 是一个 CharSequence(和 String 一样),这个版本的 Files.write 写了一个 Iterable<CharSequence>;因此我们创建了一个包含一个元素的列表。