Java 文件对象和不同的NetBeans包
我喜欢将我的应用程序数据和代码保存在NB中的不同源代码包中(不要与java包混淆) 所以这次我做到了。不幸的是,它无法通过文件对象从一个包到另一个包获取文件。这是我的包结构Java 文件对象和不同的NetBeans包,java,file,netbeans,file-io,Java,File,Netbeans,File Io,我喜欢将我的应用程序数据和代码保存在NB中的不同源代码包中(不要与java包混淆) 所以这次我做到了。不幸的是,它无法通过文件对象从一个包到另一个包获取文件。这是我的包结构 Source Packages |-[J]basicstuff |-[J]net.abc.utils assets |-[F]Images |-[F]Layouts 图例: 无说明-NB的项目属性中添加了源包 [J] 标准java包 [F] -使用文件管理器创建的数据文件夹 问题是,
Source Packages
|-[J]basicstuff
|-[J]net.abc.utils
assets
|-[F]Images
|-[F]Layouts
图例:
- 无说明-NB的项目属性中添加了源包
- [J] 标准java包
- [F] -使用文件管理器创建的数据文件夹
File layout = new File("assets/Layouts/layout.txt");
然后
然后我记得上面有四个目录,包括src dir
File layout = new File("../../../../assets/Layouts/layout.txt");
但它也不起作用
甚至试过
File layout = new File("../../../../Layouts/layout.txt");
及
但这些当然也不起作用。您能帮助我吗?根据您的应用程序所在的环境(单机版,ApplicationServer),您需要使用合适的类加载器
试着这样做:
private static InputStream getResourceAsStream(String resource) throws FileNotFoundException {
String stripped = resource.startsWith("/") ? resource.substring(1) : resource;
InputStream stream = null;
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader != null) {
stream = classLoader.getResourceAsStream(stripped);
}
if (stream == null) {
stream = MyClass.class.getResourceAsStream(resource);
}
if (stream == null) {
stream = MyClass.class.getClassLoader().getResourceAsStream(stripped);
}
if (stream == null) {
throw new FileNotFoundException("Resource not found: " + resource);
}
return stream;
}
供使用:
MyClass.getResourceAsStream("Layouts/layout.txt");
你应该回到你以前的问题,接受最好的答案,这样人们会更愿意回答你。嗯,我的应用程序是独立的。另外,主类位于basicstuff包中,而layoutmanager类位于net.abc.utils中。同时,资源也加载在net.abc.utils.layoutmanager.java中,并通过layoutmanager实例传递给主函数。MyClass代表什么?
private static InputStream getResourceAsStream(String resource) throws FileNotFoundException {
String stripped = resource.startsWith("/") ? resource.substring(1) : resource;
InputStream stream = null;
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader != null) {
stream = classLoader.getResourceAsStream(stripped);
}
if (stream == null) {
stream = MyClass.class.getResourceAsStream(resource);
}
if (stream == null) {
stream = MyClass.class.getClassLoader().getResourceAsStream(stripped);
}
if (stream == null) {
throw new FileNotFoundException("Resource not found: " + resource);
}
return stream;
}
MyClass.getResourceAsStream("Layouts/layout.txt");