001package org.opengion.fukurou.model; 002 003import java.io.File; 004import java.io.FileInputStream; 005import java.io.FileNotFoundException; 006import java.io.IOException; 007import java.io.InputStream; 008import java.nio.file.Files; 009import java.nio.file.Paths; 010import java.nio.file.StandardCopyOption; 011 012/** 013 * ファイル操作のインタフェース 014 * 015 * ローカルサーバ、クラウドストレージ(AWS,AZURE,BLUEMIX,ORACLE)のファイル操作用です。 016 * FileOperationFactoryを通して、インスタンスを生成可能です。 017 * Fileクラスを継承しているため、通常のFileとしても扱えます。 018 * 019 * @og.group ファイル操作 020 * 021 * @og.rev 5.10.8.0 (2019/02/01) 新規作成 022 * @og.rev 5.10.9.0 (2019/03/01) 変更対応 023 * @author oota 024 * @since JDK7.0 025 */ 026public class FileOperation extends File{ 027 private String myplugin; 028 private String mybucket; 029 030 /** 031 * コンストラクタ 032 * 033 * 初期化処理。 034 * 035 * @param path ファイルパス 036 */ 037 public FileOperation(final String path) { 038 super(path); 039 } 040 041 /** 042 * コンストラクタ 043 * 044 * FileOperationクラスでは、buketは使用しません。 045 * 046 * @param bucket バケット名 047 * @param path ファイルパス 048 */ 049 public FileOperation(final String bucket, final String path) { 050 this(path); 051 this.mybucket = bucket; 052 } 053 054 /** 055 * 書き込み処理 056 * 057 * InputStreamのデータを書き込みます。 058 * 059 * @param is 書き込みデータのInputStream 060 * @throws IOException ファイル関連エラー情報 061 */ 062 public void write(final InputStream is) throws IOException { 063 // InpustStreamを対象パスに出力 064 Files.copy(is, Paths.get(this.getPath()), StandardCopyOption.REPLACE_EXISTING); 065 } 066 067 /** 068 * 読み込み処理 069 * 070 * データを読み込み、InputStreamとして、返します。 071 * 072 * @return 読み込みデータのInputStream 073 * @throws FileNotFoundException ファイル非存在エラー情報 074 */ 075 public InputStream read() throws FileNotFoundException { 076 return new FileInputStream(this.getPath()); 077 } 078 079 /** 080 * コピー処理 081 * 082 * ファイルを指定先にコピーします。 083 * 084 * @param afPath コピー先 085 * @return 成否フラグ 086 */ 087 public boolean copy(final String afPath) { 088 boolean flgRtn = false; 089 090 try { 091 // 指定パスのファイルを、指定先にコピー from;jdk7 092 Files.copy(Paths.get(this.getPath()), Paths.get(afPath), StandardCopyOption.REPLACE_EXISTING); 093 flgRtn = true; 094 } catch (IOException ie) { 095 // スルーしてfalseを返す 096 } 097 098 return flgRtn; 099 } 100 101 /** 102 * ファイル移動 103 * 104 * ファイルを指定先に移動します。 105 * 106 * @param afPath 移動先 107 * @return 成否フラグ 108 */ 109 public boolean move(final String afPath) { 110 boolean flgRtn = false; 111 112 try { 113 // 指定パスのファイルを、指定先に移動 from:jdk7 114 Files.move(Paths.get(this.getPath()), Paths.get(afPath), StandardCopyOption.REPLACE_EXISTING); 115 flgRtn = true; 116 } catch (IOException ie) { 117 // スルーしてfalseを返す 118 } 119 return flgRtn; 120 } 121 122 /** 123 * 保存先のローカル判定。 124 * 125 * 判定結果を返します。 126 * trueの場合は、ローカル保存。 127 * falseの場合は、クラウドストレージに保存です。 128 * 129 * @return ローカルフラグ 130 */ 131 public boolean isLocal() { 132 return true; 133 } 134 135 /** 136 * カノニカルファイル取得。 137 * 138 * カノニカルファイル情報を取得します。 139 * 140 * @throws IOException ファイル関連エラー情報 141 * @return カノニカルファイル情報 142 */ 143 @Override 144 public FileOperation getCanonicalFile() throws IOException { 145 final String canonPath = getCanonicalPath(); 146 return new FileOperation(canonPath); 147 } 148 149 /** 150 * バケット名取得。 151 * 152 * バケット名を取得します。 153 * 154 * @return バケット名 155 */ 156 public String getBucket() { 157 return this.mybucket; 158 } 159 160 /** 161 * プラグイン名取得。 162 * 163 * プラグイン名を取得します。 164 * 165 * @return プラグイン名 166 */ 167 public String getPlugin() { 168 return this.myplugin; 169 } 170 171 /** 172 * プラグイン名のセット。 173 * 174 * プラグイン名をセットします。 175 * 176 * @param plugin プラグイン名 177 */ 178 protected void setPlugin( final String plugin ) { 179 myplugin = plugin; 180 } 181 182 183// /** テスト用メソッドです。*/ 184// public static void main(String[] args) { 185// System.out.println("start"); 186// 187// try { 188// test01(); 189// }catch(IOException ie) { 190// System.out.println(ie); 191// } 192// 193// System.out.println("end"); 194// } 195// 196// public static void test01() throws IOException{ 197// File file = new FileOperation("test.txt"); 198// File file2 = file.getCanonicalFile(); 199// 200// System.out.println(file2.getClass()); 201// 202// FileOperation fo = (FileOperation)file2; 203// System.out.println(fo.getPath()); 204// } 205// 206// public static void writeTest() { 207// File file = new FileOperation("test.txt"); 208// FileOperation fileOperation = (FileOperation) file; 209//// FileOperation_AWS aws = (FileOperation_AWS)file; 210// // file.delete(); 211// 212// try (ByteArrayInputStream bais = new ByteArrayInputStream("テスト".getBytes())) { 213// fileOperation.write(bais); 214// } catch (IOException ie) { 215// System.out.println(ie); 216// } 217// } 218}