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