/* * Copyright 2014 the original author or authors. * * Licensed 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.gradle.internal.nativeintegration.filesystem; import java.io.File; /** * A file system accessible to Gradle. */ public interface FileSystem extends Chmod, Stat { /** * Default Unix permissions for directories, {@code 755}. */ public static final int DEFAULT_DIR_MODE = 0755; /** * Default Unix permissions for files, {@code 644}. */ public static final int DEFAULT_FILE_MODE = 0644; /** * Tells whether the file system is case sensitive. * * @return <tt>true</tt> if the file system is case sensitive, <tt>false</tt> otherwise */ boolean isCaseSensitive(); /** * Tells if the file system can create symbolic links. If the answer cannot be determined accurately, * <tt>false</tt> is returned. * * @return <tt>true</tt> if the file system can create symbolic links, <tt>false</tt> otherwise */ boolean canCreateSymbolicLink(); /** * Creates a symbolic link to a target file. * * @param link the link to be created * @param target the file to link to * @exception FileException if the operation fails */ void createSymbolicLink(File link, File target) throws FileException; /** * Tells if the file is a symlink * * @param suspect the file to check * @return true if symlink, false otherwise */ boolean isSymlink(File suspect); }