34

クラスパスを使用して、Spring プロジェクト内のファイルの場所を指定するにはどうすればよいですか?

これは私が現在持っているものです:

FileReader fr = new FileReader("C:\\Users\\Corey\\Desktop\\storedProcedures.sql");

これは私のデスクトップにハードコードされています。私が望むのは、プロジェクトにあるファイルへのパスを使用できるようにすることです。

FileReader fr = new FileReader("/src/main/resources/storedProcedures.sql");

助言がありますか?

4

4 に答える 4

42

私たちは標準について話しているのjava.io.FileReaderですか?動作しませんが、それなしでは難しくありません。

/src/main/resourcesMavenディレクトリの内容はCLASSPATHのルートに配置されるため、次のコマンドを使用して簡単に取得できます。

InputStream is = getClass().getResourceAsStream("/storedProcedures.sql");

結果が見つからないnull(リソースが見つからない)場合は、リーダーで自由にラップしてください。

Reader reader = new InputStreamReader(is);
于 2012-11-26T19:48:21.173 に答える
12

同様の質問の@NimChimpskyの回答から:

Resource resource = new ClassPathResource("storedProcedures.sql");
InputStream resourceInputStream = resource.getInputStream();

ClassPathResourceとインターフェイスResourceを使用します。また、リソース ディレクトリを正しく追加していること (/src/main/resources/クラスパスに追加していること) を確認してください。

Resource には を取得するメソッドがあるjava.io.Fileため、以下も使用できることに注意してください。

Resource resource = new ClassPathResource("storedProcedures.sql");
FileReader fr = new FileReader(resource.getFile());
于 2016-04-27T16:43:41.303 に答える
5

Spring には、このような状況向けに設計された org.springframework.core.io.Resource があります。context.xml からクラスパスを Bean に渡すことができます

<bean class="test.Test1">
        <property name="path" value="classpath:/test/test1.xml" />
    </bean>

Bean で Resource として取得します。

public void setPath(Resource path) throws IOException {
    File file = path.getFile();
    System.out.println(file);
    }

出力

D:\workspace1\spring\target\test-classes\test\test1.xml

new FileReader(file) で使用できるようになりました

于 2012-11-26T21:27:10.047 に答える
0

あなたはmavenプロジェクトを持っているように見えるので、リソースはクラスパスにあります

をやる

getClass().getResource("classpath:storedProcedures.sql")
于 2012-11-26T19:48:39.373 に答える