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