If someFile.txt
is in the same folder than LoadSAC.java
, you can do:
InputStream is = LoadSAC.class.getResourceAsStream("someFile.txt");
If someFile.txt
is in a subfolder subdir
, you can do:
InputStream is = LoadSAC.class.getResourceAsStream("subdir/someFile.txt");
If your method in LoadSAC.java
is non-static, you can replace LoadSAC.class.getResourceAsStream...
by getClass().getResourceAsStream...
Be careful when compiling with ant
or maven
, by default, only .java
file are copied as .class
files in the build directory.
You have to write some rules to include someFile.txt
in the final jar
.
In your resource
directory, you can add a little helper class like this:
import java.io.InputStream;
import java.net.URL;
import javax.activation.DataSource;
import javax.activation.URLDataSource;
public abstract class ResourceHelper {
public static URL getURL(String name) {
return ResourceHelper.class.getResource(name);
}
public static InputStream getInputStream(String name) {
return ResourceHelper.class.getResourceAsStream(name);
}
public static DataSource getDataSource(String name) {
return new URLDataSource(getURL(name));
}
}
In LoadSAC.java
just call:
InputStream is = ResourceHelper.getInputStream("someFile.txt");