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

📄 copy.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* *  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.File;import java.io.IOException;import java.util.ArrayList;import java.util.Enumeration;import java.util.HashMap;import java.util.HashSet;import java.util.Hashtable;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Vector;import org.apache.tools.ant.Task;import org.apache.tools.ant.Project;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.DirectoryScanner;import org.apache.tools.ant.types.Mapper;import org.apache.tools.ant.types.FileSet;import org.apache.tools.ant.types.FilterSet;import org.apache.tools.ant.types.FilterChain;import org.apache.tools.ant.types.FilterSetCollection;import org.apache.tools.ant.types.Resource;import org.apache.tools.ant.types.ResourceCollection;import org.apache.tools.ant.types.ResourceFactory;import org.apache.tools.ant.types.resources.FileResource;import org.apache.tools.ant.util.FileUtils;import org.apache.tools.ant.util.FileNameMapper;import org.apache.tools.ant.util.IdentityMapper;import org.apache.tools.ant.util.ResourceUtils;import org.apache.tools.ant.util.SourceFileScanner;import org.apache.tools.ant.util.FlatFileNameMapper;/** * Copies a file or directory to a new file * or directory.  Files are only copied if the source file is newer * than the destination file, or when the destination file does not * exist.  It is possible to explicitly overwrite existing files.</p> * * <p>This implementation is based on Arnout Kuiper's initial design * document, the following mailing list discussions, and the * copyfile/copydir tasks.</p> * * * @since Ant 1.2 * * @ant.task category="filesystem" */public class Copy extends Task {    static final File NULL_FILE_PLACEHOLDER = new File("/NULL_FILE");    static final String LINE_SEPARATOR = System.getProperty("line.separator");    // CheckStyle:VisibilityModifier OFF - bc    protected File file = null;     // the source file    protected File destFile = null; // the destination file    protected File destDir = null;  // the destination directory    protected Vector rcs = new Vector();    private boolean enableMultipleMappings = false;    protected boolean filtering = false;    protected boolean preserveLastModified = false;    protected boolean forceOverwrite = false;    protected boolean flatten = false;    protected int verbosity = Project.MSG_VERBOSE;    protected boolean includeEmpty = true;    protected boolean failonerror = true;    protected Hashtable fileCopyMap = new Hashtable();    protected Hashtable dirCopyMap = new Hashtable();    protected Hashtable completeDirMap = new Hashtable();    protected Mapper mapperElement = null;    protected FileUtils fileUtils;    //CheckStyle:VisibilityModifier ON    private Vector filterChains = new Vector();    private Vector filterSets = new Vector();    private String inputEncoding = null;    private String outputEncoding = null;    private long granularity = 0;    /**     * Copy task constructor.     */    public Copy() {        fileUtils = FileUtils.getFileUtils();        granularity = fileUtils.getFileTimestampGranularity();    }    /**     * Get the FileUtils for this task.     * @return the fileutils object.     */    protected FileUtils getFileUtils() {        return fileUtils;    }    /**     * Set a single source file to copy.     * @param file the file to copy.     */    public void setFile(File file) {        this.file = file;    }    /**     * Set the destination file.     * @param destFile the file to copy to.     */    public void setTofile(File destFile) {        this.destFile = destFile;    }    /**     * Set the destination directory.     * @param destDir the destination directory.     */    public void setTodir(File destDir) {        this.destDir = destDir;    }    /**     * Add a FilterChain.     * @return a filter chain object.     */    public FilterChain createFilterChain() {        FilterChain filterChain = new FilterChain();        filterChains.addElement(filterChain);        return filterChain;    }    /**     * Add a filterset.     * @return a filter set object.     */    public FilterSet createFilterSet() {        FilterSet filterSet = new FilterSet();        filterSets.addElement(filterSet);        return filterSet;    }    /**     * Give the copied files the same last modified time as the original files.     * @param preserve a boolean string.     * @deprecated since 1.5.x.     *             setPreserveLastModified(String) has been deprecated and     *             replaced with setPreserveLastModified(boolean) to     *             consistently let the Introspection mechanism work.     */    public void setPreserveLastModified(String preserve) {        setPreserveLastModified(Project.toBoolean(preserve));    }    /**     * Give the copied files the same last modified time as the original files.     * @param preserve if true preserve the modified time; default is false.     */    public void setPreserveLastModified(boolean preserve) {        preserveLastModified = preserve;    }    /**     * Get whether to give the copied files the same last modified time as     * the original files.     * @return the whether destination files will inherit the modification     *         times of the corresponding source files.     * @since 1.32, Ant 1.5     */    public boolean getPreserveLastModified() {        return preserveLastModified;    }    /**     * Get the filtersets being applied to this operation.     *     * @return a vector of FilterSet objects.     */    protected Vector getFilterSets() {        return filterSets;    }    /**     * Get the filterchains being applied to this operation.     *     * @return a vector of FilterChain objects.     */    protected Vector getFilterChains() {        return filterChains;    }    /**     * Set filtering mode.     * @param filtering if true enable filtering; default is false.     */    public void setFiltering(boolean filtering) {        this.filtering = filtering;    }    /**     * Set overwrite mode regarding existing destination file(s).     * @param overwrite if true force overwriting of destination file(s)     *                  even if the destination file(s) are younger than     *                  the corresponding source file. Default is false.     */    public void setOverwrite(boolean overwrite) {        this.forceOverwrite = overwrite;    }    /**     * Set whether files copied from directory trees will be "flattened"     * into a single directory.  If there are multiple files with     * the same name in the source directory tree, only the first     * file will be copied into the "flattened" directory, unless     * the forceoverwrite attribute is true.     * @param flatten if true flatten the destination directory. Default     *                is false.     */    public void setFlatten(boolean flatten) {        this.flatten = flatten;    }    /**     * Set verbose mode. Used to force listing of all names of copied files.     * @param verbose whether to output the names of copied files.     *                Default is false.     */    public void setVerbose(boolean verbose) {        this.verbosity = verbose ? Project.MSG_INFO : Project.MSG_VERBOSE;    }    /**     * Set whether to copy empty directories.     * @param includeEmpty if true copy empty directories. Default is true.     */    public void setIncludeEmptyDirs(boolean includeEmpty) {        this.includeEmpty = includeEmpty;    }    /**     * Set method of handling mappers that return multiple     * mappings for a given source path.     * @param enableMultipleMappings If true the task will     *        copy to all the mappings for a given source path, if     *        false, only the first file or directory is     *        processed.     *        By default, this setting is false to provide backward     *        compatibility with earlier releases.     * @since Ant 1.6     */    public void setEnableMultipleMappings(boolean enableMultipleMappings) {        this.enableMultipleMappings = enableMultipleMappings;    }    /**     * Get whether multiple mapping is enabled.     * @return true if multiple mapping is enabled; false otherwise.     */    public boolean isEnableMultipleMapping() {        return enableMultipleMappings;    }    /**     * Set whether to fail when errors are encountered. If false, note errors     * to the output but keep going. Default is true.     * @param failonerror true or false.     */    public void setFailOnError(boolean failonerror) {        this.failonerror = failonerror;    }    /**     * Add a set of files to copy.     * @param set a set of files to copy.     */    public void addFileset(FileSet set) {        add(set);    }    /**     * Add a collection of files to copy.     * @param res a resource collection to copy.     * @since Ant 1.7     */    public void add(ResourceCollection res) {        rcs.add(res);    }    /**     * Define the mapper to map source to destination files.     * @return a mapper to be configured.     * @exception BuildException if more than one mapper is defined.     */    public Mapper createMapper() throws BuildException {        if (mapperElement != null) {            throw new BuildException("Cannot define more than one mapper",                                     getLocation());        }        mapperElement = new Mapper(getProject());        return mapperElement;    }    /**     * Add a nested filenamemapper.     * @param fileNameMapper the mapper to add.     * @since Ant 1.6.3     */    public void add(FileNameMapper fileNameMapper) {        createMapper().add(fileNameMapper);    }    /**     * Set the character encoding.     * @param encoding the character encoding.     * @since 1.32, Ant 1.5     */    public void setEncoding(String encoding) {        this.inputEncoding = encoding;        if (outputEncoding == null) {            outputEncoding = encoding;        }    }    /**     * Get the character encoding to be used.     * @return the character encoding, <code>null</code> if not set.     *

⌨️ 快捷键说明

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