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 * ※1つのディレクトリのみ作成します。 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}