⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loadproperties.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
字号:
/* *  Licensed to the Apache Software Foundation (ASF) under one or more *  contributor license agreements.  See the NOTICE file distributed with *  this work for additional information regarding copyright ownership. *  The ASF licenses this file to You under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 * *  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.apache.tools.ant.taskdefs;import java.io.BufferedInputStream;import java.io.ByteArrayInputStream;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.io.Reader;import java.util.Properties;import java.util.Vector;import org.apache.tools.ant.Project;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Task;import org.apache.tools.ant.filters.util.ChainReaderHelper;import org.apache.tools.ant.types.Path;import org.apache.tools.ant.types.Reference;import org.apache.tools.ant.types.Resource;import org.apache.tools.ant.types.ResourceCollection;import org.apache.tools.ant.types.FilterChain;import org.apache.tools.ant.types.resources.FileResource;import org.apache.tools.ant.types.resources.JavaResource;import org.apache.tools.ant.util.FileUtils;/** * Load a file's contents as Ant properties. * * @since Ant 1.5 * @ant.task category="utility" */public class LoadProperties extends Task {    /**     * Source resource.     */    private Resource src = null;    /**     * Holds filterchains     */    private final Vector filterChains = new Vector();    /**     * Encoding to use for input; defaults to the platform's default encoding.     */    private String encoding = null;    /**     * Set the file to load.     *     * @param srcFile The new SrcFile value     */    public final void setSrcFile(final File srcFile) {        addConfigured(new FileResource(srcFile));    }    /**     * Set the resource name of a property file to load.     *     * @param resource resource on classpath     */    public void setResource(String resource) {        assertSrcIsJavaResource();        ((JavaResource) src).setName(resource);    }    /**     * Encoding to use for input, defaults to the platform's default     * encoding. <p>     *     * For a list of possible values see     * <a href="http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html">     * http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html     * </a>.</p>     *     * @param encoding The new Encoding value     */    public final void setEncoding(final String encoding) {        this.encoding = encoding;    }    /**     * Set the classpath to use when looking up a resource.     * @param classpath to add to any existing classpath     */    public void setClasspath(Path classpath) {        assertSrcIsJavaResource();        ((JavaResource) src).setClasspath(classpath);    }    /**     * Add a classpath to use when looking up a resource.     * @return The classpath to be configured     */    public Path createClasspath() {        assertSrcIsJavaResource();        return ((JavaResource) src).createClasspath();    }    /**     * Set the classpath to use when looking up a resource,     * given as reference to a &lt;path&gt; defined elsewhere     * @param r The reference value     */    public void setClasspathRef(Reference r) {        assertSrcIsJavaResource();        ((JavaResource) src).setClasspathRef(r);    }    /**     * get the classpath used by this <code>LoadProperties</code>.     * @return The classpath     */    public Path getClasspath() {        assertSrcIsJavaResource();        return ((JavaResource) src).getClasspath();    }    /**     * load Ant properties from the source file or resource     *     * @exception BuildException if something goes wrong with the build     */    public final void execute() throws BuildException {        //validation        if (src == null) {            throw new BuildException("A source resource is required.");        }        if (!src.isExists()) {            if (src instanceof JavaResource) {                // dreaded backwards compatibility                log("Unable to find resource " + src, Project.MSG_WARN);                return;            }            throw new BuildException("Source resource does not exist: " + src);        }        BufferedInputStream bis = null;        Reader instream = null;        ByteArrayInputStream tis = null;        try {            bis = new BufferedInputStream(src.getInputStream());            if (encoding == null) {                instream = new InputStreamReader(bis);            } else {                instream = new InputStreamReader(bis, encoding);            }            ChainReaderHelper crh = new ChainReaderHelper();            crh.setPrimaryReader(instream);            crh.setFilterChains(filterChains);            crh.setProject(getProject());            instream = crh.getAssembledReader();            String text = crh.readFully(instream);            if (text != null && text.length() != 0) {                if (!text.endsWith("\n")) {                    text = text + "\n";                }                if (encoding == null) {                    tis = new ByteArrayInputStream(text.getBytes());                } else {                    tis = new ByteArrayInputStream(text.getBytes(encoding));                }                final Properties props = new Properties();                props.load(tis);                Property propertyTask = new Property();                propertyTask.bindToOwner(this);                propertyTask.addProperties(props);            }        } catch (final IOException ioe) {            final String message = "Unable to load file: " + ioe.toString();            throw new BuildException(message, ioe, getLocation());        } finally {            FileUtils.close(bis);            FileUtils.close(tis);        }    }    /**     * Adds a FilterChain.     * @param filter the filter to add     */    public final void addFilterChain(FilterChain filter) {        filterChains.addElement(filter);    }    /**     * Set the source resource.     * @param a the resource to load as a single element Resource collection.     * @since Ant 1.7     */    public void addConfigured(ResourceCollection a) {        if (src != null) {            throw new BuildException("only a single source is supported");        }        if (a.size() != 1) {            throw new BuildException("only single argument resource collections"                                     + " are supported");        }        src = (Resource) a.iterator().next();    }    private void assertSrcIsJavaResource() {        if (src == null) {            src = new JavaResource();            src.setProject(getProject());        } else if (!(src instanceof JavaResource)) {            throw new BuildException("expected a java resource as source");        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -