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

xyz.cofe.fs.File Maven / Gradle / Ivy

The newest version!
/*
 * The MIT License
 *
 * Copyright 2014 Kamnev Georgiy ([email protected]).
 *
 * Данная лицензия разрешает, безвозмездно, лицам, получившим копию данного программного
 * обеспечения и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"),
 * использовать Программное Обеспечение без ограничений, включая неограниченное право на
 * использование, копирование, изменение, объединение, публикацию, распространение, сублицензирование
 * и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется
 * данное Программное Обеспечение, при соблюдении следующих условий:
 *
 * Вышеупомянутый копирайт и данные условия должны быть включены во все копии
 * или значимые части данного Программного Обеспечения.
 *
 * ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ЛЮБОГО ВИДА ГАРАНТИЙ,
 * ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ,
 * СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ
 * ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ
 * ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ
 * ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
 * ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
 */

package xyz.cofe.fs;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import xyz.cofe.common.Reciver;

/**
 * Файл/каталог файловой системы
 * @author [email protected]
 */
public interface File extends Path,
    FileReadBytes, FileReadText,
    FileWriteBytes, FileWriteText,
    FileAppendBytes, FileAppendText
{
    /**
     * Создание клона объекта
     * @return клон
     */
    public File clone();
    
    /**
     * Возвращает ссылку на файловую систему
     * @return ссылка на файловую систему
     */
    public FileSystem getFileSystem();

    /**
     * Возвращает путь соответствующий предку файла/каталога
     * @return Предок или null
     */
    @Override
    public File getParent();

    /**
     * Возвращает дочерний путь файла / каталога
     * @param name Имя файла/каталога
     * @return Дочерний элемент
     */
    @Override
    public File getChild( String name );

    /**
     * Возвращает каноническую форму
     * @return Каноническая форма
     */
    @Override
    public File getCanonical();

    /**
     * Возвращает абсолютный путь
     * @return Абсолютный путь
     */
    @Override
    public File getAbsolute();

    /**
     * Возвращает true если файл является каталогом
     * @return true - каталог
     */
    public boolean isDirectory();

    /**
     * Возвращает true если файл является обычным файлом
     * @return true - файл
     */
    public boolean isFile();

    /**
     * Возвращает true если файл существует
     * @return true - существует
     */
    public boolean isExists();

    /**
     * Возвращает список дочерних файлов
     * @return дочерние файлы
     */
    public List listFiles();

    /**
     * Возвращает дату модификации файла
     * @return дата модификации файла
     */
    public Date getModifyDate();

    /**
     * Устанавливает дату модификации файла
     * @param modifyDate дата модификации файла
     */
    public void setModifyDate( Date modifyDate );

    /**
     * Возвращает длину файла
     * @return длина файла
     */
    public long getLength();

    /**
     * Открывает файл для чтения
     * @return Поток байтов для чтения
     */
    public BufferedInputStream openRead();

    /**
     * Открывает файл для записи
     * @return Поток для записи
     */
    public BufferedOutputStream openWrite();

    /**
     * Открывает для дозаписи в конец файла
     * @return Поток для записи
     */
    public BufferedOutputStream openAppend();

    /**
     * Открытие файла для чтения/запичи
     * @param mode Режим открытия
     * @return Случайный доступ к файлу
     */
    public java.io.RandomAccessFile openReadWrite(OpenMode mode);

    /**
     * Возвращает последовательность файлов/каталогов для обхода содержимого
     * @return последовательность файлов/каталогов
     */
    public Iterable walk();

    /**
     * Возвращает последовательность файлов/каталогов для обхода содержимого
     * @param opts Опции обхода каталога
     * @return последовательность файлов/каталогов
     */
    public Iterable walk(VisitOptions opts);

    /**
     * Проверяет возможно ли читать файл
     * @return true - чтение разрешено
     */
    public boolean isReadable();

    /**
     * Устанавливает права чтения
     * @param readable true - чтение доступно
     */
    public void setReadable( boolean readable );

    /**
     * Устанавливает права чтения
     * @param readable true - чтение доступно
     * @param ownerOnly true - только для владельца
     */
    public void setReadable(boolean readable, boolean ownerOnly);

    /**
     * Проверяет права записи
     * @return true - запись разрешена
     */
    public boolean isWritable();

    /**
     * Устанавливает права записи
     * @param writable true - запись разрешена
     */
    public void setWritable( boolean writable );

    /**
     * Устанавливает права записи
     * @param writable true - запись разрешена
     * @param ownerOnly true - только для владельца
     */
    public void setWritable(boolean writable, boolean ownerOnly);

    /**
     * Проверяет права исполнения
     * @return true - исполнение разрешено
     */
    public boolean isExecutable();

    /**
     * Устанавливает права исполнения
     * @param executable true - исполнение разрешено
     */
    public void setExecutable( boolean executable );

    /**
     * Устанавливает права исполнения
     * @param executable true - исполнение разрешено
     * @param ownerOnly true - только для владельца
     */
    public void setExecutable(boolean executable, boolean ownerOnly);

    /**
     * Удаляет файл/каталог с содержимым
     */
    public void delete();

    /**
     * Удаляет файл/каталог с содержимым
     * @param deleted удаленные файлы/каталоги
     */
    public void delete(Reciver deleted);

    /**
     * Удаляет файл/каталог с содержимым
     * @param deleted удаленные файлы/каталоги
     * @param opts опции обхода каталога
     */
    public void delete(Reciver deleted,VisitOptions opts);

    /**
     * Создает каталог
     */
    public void mkdir();

    /**
     * Создает каталог и недостающие родит. каталоги
     */
    public void mkdirs();

    /**
     * Переименовывает файл/каталог
     * @param target новое имя
     */
    public void renameTo( File target );
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy