假设我将一个文件a.txt放在com.xyz包中,并尝试访问它,如下所示。它会起作用吗?
大家好,
import com.xyz.*;
public class Hello
{
File f = new File("a.txt");
...
}
这对我不起作用。有没有解决方法?
答案 0 :(得分:3)
使用Class.getResource()
或Class.getResourceAsStream()
。例如,参见http://jc.unternet.net/src/java/com/sun/WatermarkDemo/WatermarkDemo.java
答案 1 :(得分:2)
我将提供与jcomeau_ictx相同的答案,但要短得多(一个文件中大约30行,而不是1个源文件中的> 380),并且带有屏幕截图。 ;)
import javax.swing.*;
import java.net.URL;
class GetResource {
GetResource() {
Class cl = this.getClass();
final URL url = cl.getResource( cl.getName() + ".java" );
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JEditorPane ep = new JEditorPane();
try {
ep.setPage(url);
JScrollPane sp = new JScrollPane(ep);
sp.setPreferredSize(new java.awt.Dimension(400,196));
JOptionPane.showMessageDialog(null, sp);
} catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(
null,
e.getMessage() + " See trace for details.");
}
}
});
}
public static void main(String[] args) {
new GetResource();
}
}
答案 2 :(得分:1)
这取决于你可以运行这个类的java的类路径。如果两者在同一个地方,那么它将起作用。然后无需在文件中定义路径。但是文件不在类路径目录中,那么必须定义该文件的路径,否则找不到文件。
答案 3 :(得分:1)
根据您对上述评论的回复。如果您正在寻找解决方法,只需在文件系统上指定.txt文件的路径即可。把它放在包装中没有用。
new File ("a.txt")
在文件系统中查找文件,而不在包中查找。
请同时阅读文件中的javadoc: http://download.oracle.com/javase/6/docs/api/java/io/File.html
但是我没有看到将文件放在包中的理由,除非您想将它用作资源。在这种情况下@jcomeau_ictx有正确的解决方案