2011-01-11 8 views
3

私のディレクトリ内のExcelファイルへのアクセス方法が混乱しています。私はNetbean 6.9 + GlassFish v3 bundleを使用しています。上記のようにJava - 同じディレクトリにクラスを持たずにExcelリソースにアクセスするには?

project 
    | 
    |----web 
    |----src 
     |---local.test.jaxrs 
        | 
        |-----ExcellaTestResource 
        |-----myTemplate.xls 

私は、Excelファイルは、リソースクラス(すなわちExcellaTestResource)と同じディレクトリにある場合、私は成功したExcelファイルを取得することができを考え出し。

URL templateFileUrl = ExcellaTestResource.class.getResource("myTemplate.xls"); 

もちろん、これは、同じディレクトリにjavaクラスとExcelファイルを混在させるのは良いことではありません。

だから私は、ExcelがmyTemplate.xlsは、JavaクラスExcellaTestResourceと同じディレクトリにないので、今、私はgetResource()メソッドを使用することはできません:(

私は可能性がおそらくproject/web/myTemplate.xls

project 
     | 
     |----web 
     |  |-----------myTemplate.xls //new location 
     | 
     |----src 
      |---local.test.jaxrs 
         | 
         |-----ExcellaTestResource 
         | 

にファイルを移動しかし同様メートルyTemplate.xlsに完全なURLパスを提供..権利落ちていません。

URL location = new URL("C://User/mmm/foo/bar/project/web/myTemplate.xls") 

それで、どうすれば新しい場所(... web/myTemplate.xls)でmyTemplate.xlsにアクセスできますか?

更新

私は、Fileクラスを使用してみましたが、私のテストでは、それは私の意図のディレクトリを見ていない示し..

File myFile = new File("web/myTemplate.xls"); 

System.out.println(myFile.getAbsolutePath()); 

C:M-takayashiki.netbeans \ \ユーザー\ 6.9 \ config \ GF3 \ domain1 \ web \ myTemplate.xls

答えて

1

WEB-INF/classesに入れると、サーブレットコンテキストのgetResourceAsStream()を使用してInputStreamを取得できます。

そのInputStreamから別のクラスにStringを渡す必要がある場合は、その内容を読み込み、Stringを作成して渡します。あなたの質問は、あなたのWebアプリケーションのコンテキストからExcelファイルの内容を読むことができなければならないということを意味しました。

これはウェブアプリですか?

file URLは次のようになります。 "ファイル:/// C:/User/mmm/foo/bar/project/web/myTemplate.xls"

しかし、あなたは、Webアプリケーションでこれを行うにしたい場合ExcelファイルをWEB-INF/classesに置き、サーブレット・コンテキストを使用してgetResourceAsStream()を呼び出し、InputStreamを使用して内容を読み取ります。これらのバイトを文字列に変換します。

+0

私の状況について少し詳しく説明しています。追加します。 –

+0

StringをReportBookコンストラクタに渡す必要があるので、私は投稿を更新しました。私はストリームを使用できません。 –

+0

私は理解していると思ったが、ウェブディレクトリにあるmyTemplate.xlsにどうやってアクセスすればよいのだろうか? (それは元の質問だった、申し訳ありませんが明確ではない)私の主な目的は、そのExcelファイルにアクセスすることです。あなたがそれをストリーム化する必要があるかわからないなど、この地域で混乱するような種類のもの –

1

1つの可能性はproject/webはあなたのCLASSPATHにありません。

+0

私はクラスパスを追加しましたが、効果。 –

+0

いいえ、あなたdidn 't。あなたはあなたが思っただけでした。あなたはCLASSPATHの仕組みを理解していません。 – duffymo