    001package org.opengion.fukurou.model;
    002
    003import java.io.FileNotFoundException;
    004import java.io.IOException;
    005import java.io.InputStream;
    006
    007/**
    008 * ファイル操作のインタフェース
    009 *
    010 * ローカルサーバ、クラウドストレージ(AWS,AZURE,BLUEMIX,ORACLE)のファイル操作用です。
    011 * FileOperationFactoryを通して、インスタンスを生成可能です。
    012 *
    013 * @og.group ファイル操作
    014 *
    015 * @og.rev 5.10.8.0 (2019/02/01) 新規作成
    016 * @author oota
    017 * @since       JDK7.0
    018 */
    019public interface FileOperation {
    020        /**
    021         * InputStreamのデータを書き込みます。
    022         *
    023         * @param is 書き込みデータのInputStream
    024         * @throws IOException
    025         */
    026        public void write(InputStream is) throws IOException;
    027
    028        /**
    029         * データを読み込み、InputStreamとして、返します。
    030         *
    031         * @return 読み込みデータのInputStream
    032         * @throws FileNotFoundException
    033         */
    034        public InputStream read() throws FileNotFoundException;
    035
    036        /**
    037         * ファイルを削除します。
    038         *
    039         * @return 成否フラグ
    040         */
    041        public boolean delete();
    042
    043        /**
    044         * ファイルを指定先に、コピーします。
    045         *
    046         * @param afPath コピー先
    047         * @return 成否フラグ
    048         */
    049        public boolean copy(String afPath);
    050
    051        /**
    052         * ファイルを指定先に、移動します。
    053         *
    054         * @param afPath 移動先
    055         * @return 成否フラグ
    056         */
    057        public boolean move(String afPath);
    058
    059        /**
    060         * 設定パスを取得します。
    061         *
    062         * @return 設定パス
    063         */
    064        public String getPath();
    065
    066        /**
    067         * 絶対パスを取得します。
    068         *
    069         * @return 絶対パス
    070         */
    071        public String getAbsolutePath();
    072
    073        /**
    074         * 名称を取得します。
    075         *
    076         * @return 名称
    077         */
    078        public String getName();
    079
    080        /**
    081         * 親のパスを取得します。
    082         *
    083         * @return 親のパス
    084         */
    085        public String getParent();
    086
    087        /**
    088         * ファイルサイズを返します
    089         *
    090         * @return ファイルサイズ
    091         */
    092        public long length();
    093
    094        /**
    095         * 最終更新時刻を取得します。
    096         *
    097         * @return 最終更新時刻
    098         */
    099        public long lastModified();
    100
    101        /**
    102         * ファイルの場合は、trueを返します。
    103         *
    104         * @return ファイルフラグ
    105         */
    106        public boolean isFile();
    107
    108        /**
    109         * ディレクトリの場合は、trueを返します。
    110         *
    111         * @return ディレクトリフラグ
    112         */
    113        public boolean isDirectory();
    114
    115        /**
    116         * 存在する場合は、trueを返します。
    117         *
    118         * @return 存在フラグ
    119         */
    120        public boolean exists();
    121
    122        /**
    123         * パスのファイルとディレクトリ一覧を取得します。
    124         *
    125         * @return ファイルとティレクトリ一覧
    126         */
    127        public FileOperation[] listFiles();
    128
    129        /**
    130         * パスのファイルとディレクトリ一覧を取得して、
    131         * 引数でフィルターを行います。
    132         *
    133         * @param filter フィルター
    134         * @return      ファイルとディレクトリ一覧
    135         */
    136        public FileOperation[] listFiles(FileOperationFileFilter filter);
    137
    138        /**
    139         * ディレクトリを作成します。
    140         *
    141         * ※１つのディレクトリのみ作成します。
    142         * (クラウドストレージにはディレクトリの概念が無いため、
    143         * 作成は行わず、trueを返します)
    144         *
    145         * @return 成否フラグ
    146         */
    147        public boolean mkdir();
    148
    149        /**
    150         * ディレクトリを作成します。
    151         *
    152         * ※複数のディレクトリを作成します。
    153         * (クラウドストレージにはディレクトリの概念が無いため、
    154         * 作成は行わず、trueを返します)
    155         *
    156         * @return 成否フラグ
    157         */
    158        public boolean mkdirs();
    159
    160        /**
    161         * 指定のファイル情報のファイル名に変更します。
    162         *
    163         * @param dest 変更後のファイル情報
    164         * @return 成否フラグ
    165         */
    166        public boolean renameTo(FileOperation dest);
    167
    168        /**
    169         * 親のディレクトリを返します。
    170         *
    171         * @return 親のディレクトリ
    172         */
    173        public FileOperation getParentFile();
    174
    175        /**
    176         * 書き込み可能フラグ
    177         *
    178         * ※クラウドストレージの場合は、
    179         * 必ずtrueを返します。
    180         *
    181         * @return 書き込み可能フラグ
    182         */
    183        public boolean canWrite();
    184
    185        /**
    186         * 読み取り可能フラグ
    187         *
    188         * ※クラウドストレージの場合は、
    189         * 必ずtrueを返します。
    190         *
    191         * @return 読み取り可能フラグ
    192         */
    193        public boolean canRead();
    194
    195        /**
    196         * 隠しファイルフラグ
    197         *
    198         * ※クラウドストレージの場合は、
    199         * 必ずfalseを返します。
    200         *
    201         * @return 隠しファイルフラグ
    202         */
    203        public boolean isHidden();
    204
    205        /**
    206         * 新規ファイル作成
    207         *
    208         * 既にファイルが存在しない場合のみ、
    209         * 空のファイルを作成します。
    210         *
    211         * @return 成否フラグ
    212         * @throws IOException
    213         */
    214        public boolean createNewFile() throws IOException;
    215
    216        /**
    217         * 最終更新時刻の更新
    218         *
    219         * 最終更新時刻の更新を行います。
    220         * ※クラウドストレージの場合は、
    221         * 最終更新時刻の更新を行えません。
    222         *
    223         * @param time 更新する最終更新時刻
    224         * @return 成否フラグ
    225         */
    226        public boolean setLastModified(long time);
    227
    228        /**
    229         * カノニカルファイル情報を取得します。
    230         *
    231         * ※ローカルサーバのみ通常ファイルと、
    232         * カノニカルファイルで異なります。
    233         *
    234         * @return カノニカルファイル情報
    235         * @throws IOException
    236         */
    237        public FileOperation getCanonicalFile() throws IOException;
    238}