All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.phloc.commons.io.file.IFileOperationManager Maven / Gradle / Ivy

There is a newer version: 5.0.0
Show newest version
/**
 * Copyright (C) 2006-2015 phloc systems
 * http://www.phloc.com
 * office[at]phloc[dot]com
 *
 * 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 com.phloc.commons.io.file;

import java.io.File;
import java.io.Serializable;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

/**
 * Interface for a manager operating on the file system. Is implemented by
 * {@link FileOperationManager}.
 * 
 * @author Philip Helger
 */
public interface IFileOperationManager extends Serializable
{
  /**
   * @return The last error that occurred. May be null if no action
   *         was yet performed.
   */
  @Nullable
  FileIOError getLastError ();

  /**
   * @return The last operation that was executed, independent of error or
   *         success. May be null if no action was performed yet.
   */
  @Nullable
  EFileIOOperation getLastOperation ();

  /**
   * Create a new directory. The direct parent directory already needs to exist.
   * 
   * @param aDir
   *        The directory to be created. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError createDir (@Nonnull File aDir);

  /**
   * Create a new directory if it does not exist. The direct parent directory
   * already needs to exist.
   * 
   * @param aDir
   *        The directory to be created if it does not exist. May not be
   *        null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError createDirIfNotExisting (@Nonnull File aDir);

  /**
   * Create a new directory. The parent directories are created if they are
   * missing.
   * 
   * @param aDir
   *        The directory to be created. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError createDirRecursive (@Nonnull File aDir);

  /**
   * Create a new directory if it does not exist. The direct parent directory
   * already needs to exist.
   * 
   * @param aDir
   *        The directory to be created if it does not exist. May not be
   *        null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError createDirRecursiveIfNotExisting (@Nonnull File aDir);

  /**
   * Delete an existing directory. The directory needs to be empty before it can
   * be deleted.
   * 
   * @param aDir
   *        The directory to be deleted. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError deleteDir (@Nonnull File aDir);

  /**
   * Delete an existing directory if it is existing. The directory needs to be
   * empty before it can be deleted.
   * 
   * @param aDir
   *        The directory to be deleted. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError deleteDirIfExisting (@Nonnull File aDir);

  /**
   * Delete an existing directory including all child objects.
   * 
   * @param aDir
   *        The directory to be deleted. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError deleteDirRecursive (@Nonnull File aDir);

  /**
   * Delete an existing directory including all child objects if it is existing.
   * 
   * @param aDir
   *        The directory to be deleted. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError deleteDirRecursiveIfExisting (@Nonnull File aDir);

  /**
   * Delete an existing file.
   * 
   * @param aFile
   *        The file to be deleted. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError deleteFile (@Nonnull File aFile);

  /**
   * Delete a file if it is existing.
   * 
   * @param aFile
   *        The file to be deleted. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError deleteFileIfExisting (@Nonnull File aFile);

  /**
   * Rename a directory.
   * 
   * @param aSourceDir
   *        The original directory name. May not be null.
   * @param aTargetDir
   *        The destination directory name. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError renameDir (@Nonnull File aSourceDir, @Nonnull File aTargetDir);

  /**
   * Rename a file.
   * 
   * @param aSourceFile
   *        The original file name. May not be null.
   * @param aTargetFile
   *        The destination file name. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError renameFile (@Nonnull File aSourceFile, @Nonnull File aTargetFile);

  /**
   * Copy a directory including all child objects.
   * 
   * @param aSourceDir
   *        The source directory to be copied. May not be null.
   * @param aTargetDir
   *        The destination directory where to be copied. This directory may not
   *        be existing. May not be null.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError copyDirRecursive (@Nonnull File aSourceDir, @Nonnull File aTargetDir);

  /**
   * Copies the source file to the target file.
   * 
   * @param aSourceFile
   *        The source file to use. May not be null. Needs to be an
   *        existing file.
   * @param aTargetFile
   *        The destination files. May not be null and may not be
   *        an existing file.
   * @return A non-null error code.
   */
  @Nonnull
  FileIOError copyFile (@Nonnull File aSourceFile, @Nonnull File aTargetFile);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy