从包中访问文件

时间:2011-09-14 05:13:05

标签: java file

假设我将一个文件a.txt放在com.xyz包中,并尝试访问它,如下所示。它会起作用吗?

大家好,

          import com.xyz.*;
          public class Hello
          { 
            File f = new File("a.txt");
             ...
          }

这对我不起作用。有没有解决方法?

4 个答案:

答案 0 :(得分:3)

使用Class.getResource()Class.getResourceAsStream()。例如,参见http://jc.unternet.net/src/java/com/sun/WatermarkDemo/WatermarkDemo.java

中的Sun演示源代码

答案 1 :(得分:2)

我将提供与jcomeau_ictx相同的答案,但要短得多(一个文件中大约30行,而不是1个源文件中的> 380),并且带有屏幕截图。 ;)

Get Resource

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有正确的解决方案