JAVA開発メモ
Commons-IO
 

[リロード]   [新規|編集|差分|添付]   [トップ|一覧|単語検索|最終更新|バックアップ|ヘルプ]

サイトメニュー
最新の20件
2018-08-012018-02-222016-12-222015-06-242013-07-032013-02-262011-01-122010-06-082010-03-092010-03-032009-12-302009-10-302009-02-252009-02-242009-02-112008-09-242008-09-232008-09-16


Jakarta Commons IO

Jakarta Commons IOは、java.ioパッケージを利用したプログラミングを簡略化するユーティリティクラスを提供します。

org.apache.commons.io.CopyUtils?クラス

String、byte配列、InputStream?、ReaderからOutputStream?、Writerへのコピーができます。

第1引き数:コピー元 第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
Last-modified: Tue, 24 Feb 2009 13:15:10 JST (3919d)
Link: FileNewer(3918d) FrontPage(1607d)

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.029 sec.