org.tinygroup.vfs.impl.ZipSchemaProvider Maven / Gradle / Ivy
The newest version!
/**
* Copyright (c) 1997-2013, www.tinygroup.org ([email protected]).
*
* Licensed under the GPL, Version 3.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.gnu.org/licenses/gpl.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.tinygroup.vfs.impl;
import org.tinygroup.vfs.FileObject;
import java.io.File;
/**
* 功能说明: zip协议
*
* 开发人员: renhui
* 开发时间: 2013-8-29
*
*/
public class ZipSchemaProvider extends AbstractSchemaProvider{
public static final String ZIP = ".zip";
public static final String ZIP_PROTOCAL = "zip:";
public boolean isMatch(String resource) {
String lowerCase = resource.toLowerCase();
//zip包比较特殊:无法简单根据resource判断,存在D:/lib/a.zip这种用法,和扩展协议oss://file1/a.zip无法从语法上区分。
return lowerCase.startsWith(ZIP_PROTOCAL) || (lowerCase.endsWith(ZIP) && new File(resource).exists());
}
public String getSchema() {
return ZIP_PROTOCAL;
}
public FileObject resolver(String resourceResolve) {
String resource = resourceResolve;
if (resource.startsWith(ZIP_PROTOCAL)) {
resource = resource.substring(ZIP_PROTOCAL.length());
}
if (resource.startsWith(FileSchemaProvider.FILE_PROTOCOL)) {
resource = resource.substring(FileSchemaProvider.FILE_PROTOCOL.length());
}
return new ZipFileObject(this, getResourceResolve(resourceResolve,ZIP_PROTOCAL));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy