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

📄 propertiesfilecache.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.types.selectors.modifiedselector;import java.util.Iterator;import java.util.Vector;import java.util.Enumeration;import java.util.Properties;import java.io.File;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.BufferedOutputStream;import java.io.FileOutputStream;/** * Use java.util.Properties for storing the values. * The use of this Cache-implementation requires the use of the parameter * <param name="cache.cachefile" .../> for defining, where to store the * properties file. * * The ModifiedSelector sets the <i>cachefile</i> to the default value * <i>cache.properties</i>. * * Supported <param>s are: * <table> * <tr> *   <th>name</th><th>values</th><th>description</th><th>required</th> * </tr> * <tr> *   <td> cache.cachefile </td> *   <td> <i>path to file</i> </td> *   <td> the name of the properties file </td> *   <td> yes </td> * </tr> * </table> * * @version 2003-09-13 * @since  Ant 1.6 */public class PropertiesfileCache implements Cache {    // -----  member variables - configuration  -----    /** Where to store the properties? */    private File cachefile = null;    /** Object for storing the key-value-pairs. */    private Properties cache = new Properties();    // -----  member variables - internal use  -----    /** Is the cache already loaded? Prevents from multiple load operations. */    private boolean cacheLoaded = false;    /** Must the cache be saved? Prevents from multiple save operations. */    private boolean cacheDirty  = true;    // -----  Constructors  -----    /** Bean-Constructor. */    public PropertiesfileCache() {    }    /**     * Constructor.     * @param cachefile set the cachefile     */    public PropertiesfileCache(File cachefile) {        this.cachefile = cachefile;    }    // -----  Cache-Configuration  -----    /**     * Setter.     * @param file new value     */    public void setCachefile(File file) {        cachefile = file;    }    /**     * Getter.     * @return the cachefile     */    public File getCachefile() {        return cachefile;    }    /**     * This cache is valid if the cachefile is set.     * @return true if all is ok false otherwise     */    public boolean isValid() {        return (cachefile != null);    }    // -----  Data Access    /**     * Load the cache from underlying properties file.     */    public void load() {        if ((cachefile != null) && cachefile.isFile() && cachefile.canRead()) {            try {                BufferedInputStream bis = new BufferedInputStream(                    new FileInputStream(cachefile));                cache.load(bis);                bis.close();            } catch (Exception e) {                e.printStackTrace();            }        }        // after loading the cache is up to date with the file        cacheLoaded = true;        cacheDirty  = false;    }    /**     * Saves modification of the cache.     * Cache is only saved if there is one ore more entries.     * Because entries can not be deleted by this API, this Cache     * implementation checks the existence of entries before creating the file     * for performance optimisation.     */    public void save() {        if (!cacheDirty) {            return;        }        if ((cachefile != null) && cache.propertyNames().hasMoreElements()) {            try {                BufferedOutputStream bos = new BufferedOutputStream(                      new FileOutputStream(cachefile));                cache.store(bos, null);                bos.flush();                bos.close();            } catch (Exception e) {                e.printStackTrace();            }        }        cacheDirty = false;    }    /** Deletes the cache and its underlying file. */    public void delete() {        cache = new Properties();        cachefile.delete();        cacheLoaded = true;        cacheDirty = false;    }    /**     * Returns a value for a given key from the cache.     * @param key the key     * @return the stored value     */    public Object get(Object key) {        if (!cacheLoaded) {            load();        }        try {            return cache.getProperty(String.valueOf(key));        } catch (ClassCastException e) {            return null;        }    }    /**     * Saves a key-value-pair in the cache.     * @param key the key     * @param value the value     */    public void put(Object key, Object value) {        cache.put(String.valueOf(key), String.valueOf(value));        cacheDirty = true;    }    /**     * Returns an iterator over the keys in the cache.     * @return An iterator over the keys.     */    public Iterator iterator() {        Vector v = new java.util.Vector();        Enumeration en = cache.propertyNames();        while (en.hasMoreElements()) {            v.add(en.nextElement());        }        return v.iterator();    }    // -----  additional  -----    /**     * Override Object.toString().     * @return information about this cache     */    public String toString() {        StringBuffer buf = new StringBuffer();        buf.append("<PropertiesfileCache:");        buf.append("cachefile=").append(cachefile);        buf.append(";noOfEntries=").append(cache.size());        buf.append(">");        return buf.toString();    }}

⌨️ 快捷键说明

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