Доступ к файлу из пакета - PullRequest
       2

Доступ к файлу из пакета

1 голос
/ 14 сентября 2011

предположим, я положил файл a.txt в пакет com.xyz и попытался получить к нему доступ, как показано ниже.Это будет работать?

Привет всем,

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

Это не работает для меня.Есть ли обходной путь?

Ответы [ 4 ]

3 голосов
/ 14 сентября 2011

Используйте Class.getResource() или Class.getResourceAsStream().см., например, демонстрационный источник Sun на http://jc.unternet.net/src/java/com/sun/WatermarkDemo/WatermarkDemo.java

2 голосов
/ 14 сентября 2011

Я предложу тот же ответ, что и jcomeau_ictx, но намного короче (около 30 строк в одном файле по сравнению с> 380 в 1 исходном файле из 5), ... и со скриншотом.;)

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();
  }
}
1 голос
/ 14 сентября 2011

На основании ваших ответов на комментарии выше. Если вы ищете обходной путь, просто укажите путь к файлу .txt в файловой системе. Помещение в пакет не помогает.

new File ("a.txt")

ищет файл в файловой системе, а не в пакете.

Пожалуйста, прочтите также javadocs в файле: http://download.oracle.com/javase/6/docs/api/java/io/File.html

Однако я не вижу смысла помещать файл в пакет, если вы не захотите использовать его как ресурс. В этом случае @jcomeau_ictx имеет правильное решение

1 голос
/ 14 сентября 2011

Это зависит от вашего пути к классу Java, откуда вы можете запустить этот класс.Если оба находятся в одном месте, то это будет работать.Тогда нет необходимости определять путь в файле.Но файл не находится в каталоге classpath, поэтому необходимо указать путь к этому файлу, в противном случае файл не найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...