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(String path) { 038 super(path); 039 } 040 041 /** 042 * コンストラクタ 043 * 044 * FileOperationクラスでは、buketは使用しません。 045 * 046 * @param bucket バケット名 047 * @param path ファイルパス 048 */ 049 public FileOperation(String bucket, 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(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(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 public FileOperation getCanonicalFile() throws IOException { 144 String canonPath = getCanonicalPath(); 145 return new FileOperation(canonPath); 146 } 147 148 /** 149 * バケット名取得 150 * 151 * @return バケット名 152 */ 153 public String getBucket() { 154 return this.mybucket; 155 } 156 157 /** 158 * プラグイン名取得 159 * 160 * @return プラグイン名 161 */ 162 public String getPlugin() { 163 return this.myplugin; 164 } 165 166 /** 167 * プラグイン名のセット 168 * 169 * @param plugin プラグイン名 170 */ 171 protected void setPlugin( String plugin ) { 172 myplugin = plugin; 173 } 174 175 176// /** テスト用メソッドです。*/ 177// public static void main(String[] args) { 178// System.out.println("start"); 179// 180// try { 181// test01(); 182// }catch(IOException ie) { 183// System.out.println(ie); 184// } 185// 186// System.out.println("end"); 187// } 188// 189// public static void test01() throws IOException{ 190// File file = new FileOperation("test.txt"); 191// File file2 = file.getCanonicalFile(); 192// 193// System.out.println(file2.getClass()); 194// 195// FileOperation fo = (FileOperation)file2; 196// System.out.println(fo.getPath()); 197// } 198// 199// public static void writeTest() { 200// File file = new FileOperation("test.txt"); 201// FileOperation fileOperation = (FileOperation) file; 202//// FileOperation_AWS aws = (FileOperation_AWS)file; 203// // file.delete(); 204// 205// try (ByteArrayInputStream bais = new ByteArrayInputStream("テスト".getBytes())) { 206// fileOperation.write(bais); 207// } catch (IOException ie) { 208// System.out.println(ie); 209// } 210// } 211}