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>
;因此我们创建了一个包含一个元素的列表。
我正在尝试创建一个 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>
;因此我们创建了一个包含一个元素的列表。