0

现在我正在尝试使用 springBatch 将 http 文件(示例:“https://www.w3.org/TR/PNG/iso_8859-1.txt”)写入我的本地电脑。但无法读取文件。我的阅读器文件如下:

public FlatFileItemReader<String> reader(){
   FlatFileItemReader<String> reader = new FlatFileItemReader<String>();
   reader.setResource(new UrlResource("https://www.w3.org/TR/PNG/iso_8859-1.txt"));
   reader.setRecordSeparatorPolicy(new RecordSeparatorPolicy() {
            @Override
            public boolean isEndOfRecord(String s) {
                if (s.length() == 100)
                    return true;
                return false;
            }

            @Override
            public String postProcess(String s) {
                return s;
            }

            @Override
            public String preProcess(String s) {
                return s;
            }
        });
   return reader;
}

我正在从输入中读取 100 个长度的块并将其传递给编写器。但我收到此错误:

org.springframework.batch.item.file.FlatFileParseException: Unexpected end of file before record complete
    at org.springframework.batch.item.file.FlatFileItemReader.applyRecordSeparatorPolicy(FlatFileItemReader.java:303) ~[spring-batch-infrastructure-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.batch.item.file.FlatFileItemReader.readLine(FlatFileItemReader.java:220) ~[spring-batch-infrastructure-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.batch.item.file.FlatFileItemReader.doRead(FlatFileItemReader.java:178) ~[spring-batch-infrastructure-4.2.4.RELEASE.jar:4.2.4.RELEASE]
...

如何从 http 读取完整的 .txt 文件并处理并将其写入所需位置?

另外,如果我将视频文件而不是 txt 文件传递​​给阅读器怎么办(在这种情况下应该是什么 FlatFileItemReader< ??? > 类型?

4

1 回答 1

0

您不需要该自定义记录分隔符策略,您可以使用 aPassThroughLineMapper代替。

另外,如果不是txt文件,我会将视频文件传递给阅读器怎么办(在这种情况下应该是什么FlatFileItemReader类型?

您可以byte[]用作项目类型或使用SimpleBinaryBufferedReaderFactory

于 2020-08-31T08:29:26.203 回答