JAVA開発メモ
Commons-IO のバックアップソース(No.3)
 

[トップ|一覧|単語検索|最終更新|バックアップ|ヘルプ]

*[[Jakarta Commons IO:http://jakarta.apache.org/commons/io/]]
[[Jakarta Commons IO:http://jakarta.apache.org/commons/io/]]は、java.ioパッケージを利用したプログラミングを簡略化するユーティリティクラスを提供します。
#contents

**org.apache.commons.io.CopyUtilsクラス
String、byte配列、InputStream、ReaderからOutputStream、Writerへのコピーができます。

|CENTER:''第1引き数:コピー元''|CENTER:''第2引き数:コピー先''|
|InputStream|OutputStream|
|Reader|Writer|
|InputStream|Writer|
|Reader|OutputStream|
|String|OutputStream|
|String|Writer|
|byte[]|Writer|
|byte[]|OutputStream|

 try {
     InputStream in = new FileInputStream("C:\\tmp\\org.txt");
     OutputStream out = new FileOutputStream("C:\\tmp\\copy.txt");
     // 入力ストリームから出力ストリームへコピーしてファイルを複製する。
     CopyUtils.copy(in, out);
 } catch (Exception e) {
     e.printStackTrace();
 }

**org.apache.commons.io.IOUtilsクラス
ストリームを安全にクローズします。また、ストリームからString、byte配列を取得できます。
 InputStream in = null;
 try {
     in = new URL("http://www.moriwaki.net/wiki/").openStream();
     // URLから取得したストリームの内容をテキスト表示する
     System.out.println(IOUtils.toString(in));
 } catch (Exception e) {
     e.printStackTrace();
 } finally {
     // ストリームを閉じる
     IOUtils.closeQuietly(in);
 }

**org.apache.commons.io.FileUtilsクラス
Fileクラス処理の様々な機能を提供します。

ディレクトリ内のファイル、サブディレクトリ全てを削除します。
 File dir = new File("C:\\tmp\\work");
 try {
     FileUtils.cleanDirectory(dir);
 } catch (IOException e) {
     e.printStackTrace();
 }

ファイルをコピーします。
 File file1 = new File("C:\\tmp\\test.txt");
 File file2 = new File("C:\\tmp\\copy.txt");
     try {
 FileUtils.copyFile(file1, file2);
 } catch (IOException e) {
     e.printStackTrace();
 }

ディレクトリ内で指定の拡張子のファイルを検索します。
 File dir = new File("C:\\tmp");
 String[] extensions = {"txt", "html"};
 boolean recursive = true; // true:サブディレクトも検索する
 Collection files = FileUtils.listFiles(dir, extensions, recursive);
 System.out.println(files);

ディレクトリ配下のサイズをlong型で返します。
 File dir = new File("C:\\tmp");
 long size = FileUtils.sizeOfDirectory(dir);
 System.out.println(size + " bytes");
 System.out.println(FileUtils.byteCountToDisplaySize(size));
出力結果
 693928711 bytes
 661 MB

その他の主なメソッド
-void ''touch''(File)
--touchコマンドと同等の処理をします。
-File[] ''convertFileCollectionToFileArray''(Collection)
--Fileクラスのコレクションを配列に変換します。
-Collection ''listFiles''(File, IOFileFilter, IOFileFilter)
--指定のディレクトリ内にてフィルタに従って検索します。
-boolean ''contentEquals''(File, File)
--二つのFileオブジェクトが等しいかどうか比較します。
-File ''toFile''(URL)
--URLオブジェクトからFileオブジェクトへ変換します。
-URL[] ''toURLs''(File[])
--File配列をURL配列に変換します。
-String ''readFileToString''(File, String)
--指定のエンコーディング(第2引き数)でFileオブジェクトをStringオブジェクトに変換します。
-void ''writeStringToFile''(File, String, String)
--第2引き数のStringオブジェクトを指定のエンコーディング(第3引き数)でFileオブジェクトに変換する。
-void ''forceDelete''(File)
--ファイルまたはディレクトリを強制的に削除します。File.delete()との違いはディレクトリは空である必要はなく、削除失敗時にはfalseを返すのではなく例外をスローします。
-boolean ''isFileNewer''(File, File)
--第1引き数のFileが第2引き数のFileより新しいか比較します。

**org.apache.commons.io.filefilter.FileFilterUtilsクラス
FileUtilsでの検索するフィルタを生成します。

 File dir = new File("C:\\tmp");
 // 前方一致で"test"
 IOFileFilter fileFilter1 = FileFilterUtils.prefixFileFilter("test");
 // 後方一致で"html"
 IOFileFilter fileFilter2 = FileFilterUtils.suffixFileFilter("html");
 // fileFilter1とfileFilter2の条件をANDで結合
 IOFileFilter fileFilter =
     FileFilterUtils.andFileFilter(fileFilter1, fileFilter2);

 // サブディレクトリも検索する(しない場合はnull)
 IOFileFilter dirFilter = FileFilterUtils.trueFileFilter();
 // CVSディレクトリは無視する
 dirFilter = FileFilterUtils.makeCVSAware(dirFilter);

 // 検索実行
 files = FileUtils.listFiles(dir, fileFilter, dirFilter);
 System.out.println(files);

出力結果
 [C:\tmp\test.html, C:\tmp\test2.html]

トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Modified by MT22(Moriwaki Takashi)

"PukiWiki" 1.3.7 Copyright © 2001,2002,2003 PukiWiki Developers Team. License is GNU/GPL.
Based on "PukiWiki" 1.3 by sng
Powered by PHP 5.3.29

HTML convert time to 0.005 sec.