получение входного файла пути во время выполнения - PullRequest
0 голосов
/ 21 февраля 2012

У моего основного класса есть еще один класс, который принимает путь к файлу (абсолютный) в качестве строки.Как я могу инициализировать этот путь к файлу с его значением.Никакого жесткого кодирования пути к файлу не требуется.

Моя структура пакета

src
 com.xyz.pk1
data  //input.txt is present in this dir



public class Test{

  public static void main(){
   String filepath = "" //TODO :no hard coding like C:\filename.txt
   MyClass c = new new Myclass(filepath);
 }

}

РЕДАКТИРОВАТЬ: Моя структура папок выглядит следующим образом СЕЙЧАС:

src
data
   input.txt

сейчасесли я наберу следующий код внутри класса, помещенного в src

 Test.class.getResourceAsStream("data/Input.csv");

, я получу ошибку

Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:61)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:55)

любые подсказки ??

Ответы [ 3 ]

0 голосов
/ 21 февраля 2012

Вероятно, у вас не будет src режиссера после сборки.Это будет classes или bin или что-то подобное.Если ваши данные статичны, папку ресурсов следует объединить с папкой классов (это значение по умолчанию для Maven).

Т.е. структура может быть:

/
    com
        xyz
            pk1
                Test.class
    data
        input.txt

Тогда вы можете получить URL-адрес, указывающий на ресурс с помощью

YourClassName.class.getResource("/data/input.txt");

или InputStream с

YourClassName.class.getResourceAsStream("/data/input.txt");

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

0 голосов
/ 21 февраля 2012

Вы много Выберите JFileChooser, чтобы выбрать файл, а затем установите JFileChooser chooser=new JFileChooser(); а также затем File file=chooser.getSelectedFile();

0 голосов
/ 21 февраля 2012

Это вернет абсолютный путь к файлу

File f = new File("<your file>");
String path = f.getAbsolutePath();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...