📄 attrib.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.optional.windows;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.taskdefs.ExecuteOn;import org.apache.tools.ant.taskdefs.condition.Os;import org.apache.tools.ant.types.FileSet;import java.io.File;/** * Attrib equivalent for Win32 environments. * Note: Attrib parameters /S and /D are not handled. * * @since Ant 1.6 */public class Attrib extends ExecuteOn { private static final String ATTR_READONLY = "R"; private static final String ATTR_ARCHIVE = "A"; private static final String ATTR_SYSTEM = "S"; private static final String ATTR_HIDDEN = "H"; private static final String SET = "+"; private static final String UNSET = "-"; private boolean haveAttr = false; /** Constructor for Attrib. */ public Attrib() { super.setExecutable("attrib"); super.setParallel(false); } /** * A file to be attribed. * @param src a file */ public void setFile(File src) { FileSet fs = new FileSet(); fs.setFile(src); addFileset(fs); } /** * Set the ReadOnly file attribute. * @param value a <code>boolean</code> value */ public void setReadonly(boolean value) { addArg(value, ATTR_READONLY); } /** * Set the Archive file attribute. * @param value a <code>boolean</code> value */ public void setArchive(boolean value) { addArg(value, ATTR_ARCHIVE); } /** * Set the System file attribute. * @param value a <code>boolean</code> value */ public void setSystem(boolean value) { addArg(value, ATTR_SYSTEM); } /** * Set the Hidden file attribute. * @param value a <code>boolean</code> value */ public void setHidden(boolean value) { addArg(value, ATTR_HIDDEN); } /** * Check the attributes. */ protected void checkConfiguration() { if (!haveAttr()) { throw new BuildException("Missing attribute parameter", getLocation()); } super.checkConfiguration(); } /** * Set the executable. * This is not allowed, and it always throws a BuildException. * @param e ignored * @ant.attribute ignore="true" */ public void setExecutable(String e) { throw new BuildException(getTaskType() + " doesn\'t support the executable attribute", getLocation()); } /** * Set the executable. * This is not allowed, and it always throws a BuildException. * @param e ignored * @ant.attribute ignore="true" */ public void setCommand(String e) { throw new BuildException(getTaskType() + " doesn\'t support the command attribute", getLocation()); } /** * Add source file. * This is not allowed, and it always throws a BuildException. * @param b ignored * @ant.attribute ignore="true" */ public void setAddsourcefile(boolean b) { throw new BuildException(getTaskType() + " doesn\'t support the addsourcefile attribute", getLocation()); } /** * Set skip empty file sets. * This is not allowed, and it always throws a BuildException. * @param skip ignored * @ant.attribute ignore="true" */ public void setSkipEmptyFilesets(boolean skip) { throw new BuildException(getTaskType() + " doesn\'t support the " + "skipemptyfileset attribute", getLocation()); } /** * Set parallel. * This is not allowed, and it always throws a BuildException. * @param parallel ignored * @ant.attribute ignore="true" */ public void setParallel(boolean parallel) { throw new BuildException(getTaskType() + " doesn\'t support the parallel attribute", getLocation()); } /** * Set max parallel. * This is not allowed, and it always throws a BuildException. * @param max ignored * @ant.attribute ignore="true" */ public void setMaxParallel(int max) { throw new BuildException(getTaskType() + " doesn\'t support the maxparallel attribute", getLocation()); } /** * Check if the os is valid. * Always include windows * @return true if the os is valid. */ protected boolean isValidOs() { return Os.isFamily("windows") && super.isValidOs(); } private static String getSignString(boolean attr) { return (attr ? SET : UNSET); } private void addArg(boolean sign, String attribute) { createArg().setValue(getSignString(sign) + attribute); haveAttr = true; } private boolean haveAttr() { return haveAttr; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -