リソースからInputStreamの取得するための汎用的なサンプル

2009/02/16 17:29Update
TAGS: InputStream | URL | ファイル | classpath | WEB-INF | ClassLoader | getResourceAsStream

URLやファイルなどにアクセスするための汎用的なサンプルです。

JavaのInputStreamは、入力ストリームのもっとも基本的なクラスです。InputStreamを用いて、URLやファイルの絶対パス、classpathにあるファイルなどにアクセス(読み込み)することができます。

本文は、これらのリソースにアクセスための汎用的な方法を提供します。

汎用メソッド コード


    public static InputStream getInputStream(String resource) {
        
        InputStream stream = this.getClass().getResourceAsStream( resource );
        if ( stream == null ) stream = Thread.currentThread().getContextClassLoader().getResourceAsStream( resource );

        if ( stream == null ) {
            File file = new File(resource);
            try {
                return new FileInputStream(file);
            } catch (Exception ex) {
                //
            }
            
            try {
                URL sourceUrl = new URL(resource);
                if (sourceUrl != null) {
                    stream = sourceUrl.openStream();
                }
            } catch (Exception e) {
                return null;
            }
        }
                
        return stream;
    }


使い方例:


URLからInputStreamを取得する例:
InputStream inputStream = getInputStream("http://www.syboos.jp/");


ファイルパスからInputStreamを取得する例:
InputStream inputStream = getInputStream("c:/test.txt");


classpathにあるファイルからInputStreamを取得する例:
InputStream inputStream = getInputStream("com/syboos/test/My.xml");

※上の例の場合、My.xmlはcom.syboos.testにあるclassファイルと同じフォルダに配置する必要があります。

InputStream inputStream = getInputStream("/WEB-INF/some.xml");


メリット


◇ シンプルな使い方。同じ方法でURLやファイルなどのリソースからInputStreamを取得することができます。
◇ 便利。ファイルを扱いたい場合、絶対パスではなく、classpathにあるファイルにも簡単に扱える

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation