public class TruncatingFilter extends Object implements DataFilter
该过滤器主要用于测试目的,但也可用于过滤时间序列中不需要的尾随数据
Constructor and Description |
---|
TruncatingFilter(int nbLines)
简单构造函数。
|
Modifier and Type | Method and Description |
---|---|
DataSource |
filter(DataSource original)
过滤数据源。
|
public TruncatingFilter(int nbLines)
nbLines
- 要保留的行数
public DataSource filter(DataSource original) throws IOException
过滤通常基于后缀。例如,一个gzip压缩文件的原始名称形式为base.ext.gz,而相应的未压缩文件将具有一个过滤后的名称base.ext。
一个过滤器绝对不能自行打开
DataSource
,无论它返回原始实例还是过滤后的实例。原因是上层将决定打开(或不打开)返回的值,而DataSource
只能打开一次;这是由DataSource
提供的延迟打开的核心原则。
请注意,由于数据提供程序管理器
将尝试将所有过滤器堆叠在一起,只要它们的此方法的实现返回与original
参数不同的值。这意味着过滤器必须执行一些检查,以查看是否必须应用它们。例如,如果需要对所有数据应用一次解密过滤器,则过滤器应该检查name
中是否存在后缀,并仅在后缀存在时创建一个新的过滤后的DataSource
实例,从过滤后的实例中删除后缀。如果未这样做,而只是创建一个具有一个解密层的过滤实例而不更改名称,将导致构建无限堆叠的解密过滤器,直到发生堆栈溢出或内存耗尽异常。
filter
在接口 DataFilter
original
- 原始数据源
original
IOException
- 如果无法创建过滤流
Copyright © 2002-2023 CS GROUP. All rights reserved.