7

Java プロジェクトのリソース フォルダにあるファイルを読みたいです。そのために次のコードを使用しました

MyClass.class.getResource("/myFile.xsd").getPath();

そして、ファイルのパスを確認したかったのです。しかし、それは次のパスを提供します

file:/home/malintha/.m2/repository/org/wso2/carbon/automation/org.wso2.carbon.automation.engine/4.2.0-SNAPSHOT/org.wso2.carbon.automation.engine-4.2.0-SNAPSHOT.jar!/myFile.xsd

Maven リポジトリの依存関係でファイル パスを取得しましたが、ファイルを取得していません。これどうやってするの?

4

6 に答える 6

4

フォルダーのパスを指定する必要がありresます。

MyClass.class.getResource("/res/path/to/the/file/myFile.xsd").getPath();
于 2013-10-01T12:16:31.850 に答える
3

リソースディレクトリはクラスパスにありますか?

パスにリソース ディレクトリが含まれていません:

MyClass.class.getResource("/${YOUR_RES_DIR_HERE}/myFile.xsd").getPath();
于 2013-10-01T12:16:51.053 に答える
1

リソース フォルダーからファイル インスタンスを作成する信頼できる方法は、リソースをストリームとして一時ファイルにコピーすることです (一時ファイルは JVM の終了時に削除されます)。

public static File getResourceAsFile(String resourcePath) {
    try {
        InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream(resourcePath);
        if (in == null) {
            return null;
        }

        File tempFile = File.createTempFile(String.valueOf(in.hashCode()), ".tmp");
        tempFile.deleteOnExit();

        try (FileOutputStream out = new FileOutputStream(tempFile)) {
            //copy stream
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = in.read(buffer)) != -1) {
                out.write(buffer, 0, bytesRead);
            }
        }
        return tempFile;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}
于 2016-02-17T19:27:11.543 に答える
0

他の Maven モジュールのリソースにアクセスすることはできません。src/main/resourcesそのため、またはsrc/test/resourcesフォルダーにリソース myFile.xsd を提供する必要があります。

于 2014-03-28T16:33:01.063 に答える