CsvOutput.java

net.minecraft.util.CsvOutput

信息

  • 全限定名:net.minecraft.util.CsvOutput
  • 类型:public class
  • 包:net.minecraft.util
  • 源码路径:src/main/java/net/minecraft/util/CsvOutput.java
  • 起始行号:L12
  • 职责:

    TODO

字段/常量

  • LINE_SEPARATOR

    • 类型: String
    • 修饰符: private static final
    • 源码定位: L13
    • 说明:

      TODO

  • FIELD_SEPARATOR

    • 类型: String
    • 修饰符: private static final
    • 源码定位: L14
    • 说明:

      TODO

  • output

    • 类型: Writer
    • 修饰符: private final
    • 源码定位: L15
    • 说明:

      TODO

  • columnCount

    • 类型: int
    • 修饰符: private final
    • 源码定位: L16
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.util.CsvOutput.Builder
    • 类型: class
    • 修饰符: public static
    • 源码定位: L44
    • 说明:

      TODO

构造器

private CsvOutput(Writer output, List<String> headers) @ L18

  • 构造器名:CsvOutput
  • 源码定位:L18
  • 修饰符:private

参数:

  • output: Writer
  • headers: List

说明:

TODO

方法

下面的方法块按源码顺序生成。

public static CsvOutput.Builder builder() @ L24

  • 方法名:builder
  • 源码定位:L24
  • 返回类型:CsvOutput.Builder
  • 修饰符:public static

参数:

说明:

TODO

public void writeRow(Object... values) @ L28

  • 方法名:writeRow
  • 源码定位:L28
  • 返回类型:void
  • 修饰符:public

参数:

  • values: Object…

说明:

TODO

private void writeLine(Stream<?extends Object> values) @ L36

  • 方法名:writeLine
  • 源码定位:L36
  • 返回类型:void
  • 修饰符:private

参数:

  • values: Stream<?extends Object>

说明:

TODO

private static String getStringValue(Object value) @ L40

  • 方法名:getStringValue
  • 源码定位:L40
  • 返回类型:String
  • 修饰符:private static

参数:

  • value: Object

说明:

TODO

代码

public class CsvOutput {
    private static final String LINE_SEPARATOR = "\r\n";
    private static final String FIELD_SEPARATOR = ",";
    private final Writer output;
    private final int columnCount;
 
    private CsvOutput(Writer output, List<String> headers) throws IOException {
        this.output = output;
        this.columnCount = headers.size();
        this.writeLine(headers.stream());
    }
 
    public static CsvOutput.Builder builder() {
        return new CsvOutput.Builder();
    }
 
    public void writeRow(@Nullable Object... values) throws IOException {
        if (values.length != this.columnCount) {
            throw new IllegalArgumentException("Invalid number of columns, expected " + this.columnCount + ", but got " + values.length);
        } else {
            this.writeLine(Stream.of(values));
        }
    }
 
    private void writeLine(Stream<? extends @Nullable Object> values) throws IOException {
        this.output.write(values.map(CsvOutput::getStringValue).collect(Collectors.joining(",")) + "\r\n");
    }
 
    private static String getStringValue(@Nullable Object value) {
        return StringEscapeUtils.escapeCsv(value != null ? value.toString() : "[null]");
    }
 
    public static class Builder {
        private final List<String> headers = Lists.newArrayList();
 
        public CsvOutput.Builder addColumn(String header) {
            this.headers.add(header);
            return this;
        }
 
        public CsvOutput build(Writer writer) throws IOException {
            return new CsvOutput(writer, this.headers);
        }
    }
}

引用的其他类