public Flux generateCsvPrinter()

in backup-core/src/main/java/org/apache/iotdb/backup/core/pipeline/out/source/OutStructureSource.java [101:138]


  public Flux<String> generateCsvPrinter(String structureFileName) {
    return Flux.deferContextual(
        contextView -> {
          PipelineContext<ExportModel> pcontext = contextView.get("pipelineContext");
          ExportModel exportModel = pcontext.getModel();
          try {
            File file = new File(exportModel.getFileFolder());
            if (!file.exists()) {
              file.mkdirs();
            }
            FileOutputStream outputStream =
                new FileOutputStream(exportModel.getFileFolder() + TIMESERIES_STRUCTURE);
            CSVPrinter printer =
                CSVFormat.Builder.create(CSVFormat.DEFAULT)
                    .setHeader()
                    .setSkipHeaderRecord(true)
                    .setEscape('\\')
                    .setQuoteMode(QuoteMode.NONE)
                    .build()
                    .print(new OutputStreamWriter(outputStream, exportModel.getCharSet()));
            List<String> headerList = new ArrayList<>();
            headerList.add("timeseries");
            headerList.add("alias");
            headerList.add("storage group");
            headerList.add("dataType");
            headerList.add("encoding");
            headerList.add("compression");
            headerList.add("tags");
            headerList.add("attributes");
            headerList.add("aligned");
            exportPipelineService.syncPrint(printer, headerList);
            csvPrinters[0] = printer;
          } catch (IOException e) {
            log.error("异常信息:", e);
          }
          return Flux.just(structureFileName);
        });
  }