JAVA и GIT Как управлять внешними ресурсами.СДЕЛАНО ПРАВИЛЬНОЙ ТЕХНИКОЙ - PullRequest
0 голосов
/ 23 сентября 2019

Я буквально схожу с ума !!!

Как правильно управлять внешним файлом в проекте Java?Или, в более общем случае, в любом проекте.

В настоящее время я использую IDE Intellij, но я хочу, чтобы это было более общее решение вместо решения, зависящего от IDE.

У меня есть следующая папкаструктура:

├── headers
│   └── header1
├── htmlfiles
│   └── reply1.html
├── out
│   └── production
│       └── WebApp-e01
│           └── ch
│               └── miao
│                   └── webapp
│                       └── server
│                           ├── Content.class
│                           ├── Request.class
│                           └── Server.class
├── README.md
├── src
│   └── ch
│       └── miao
│           └── webapp
│               └── server
│                   ├── Content.java
│                   ├── Request.java
│                   └── Server.java <-- MAIN HERE
└── WebApp-e01.iml

Я клонировал проект из git, который был на моем другом ноутбуке, поэтому абсолютный путь к файлу больше не действителен, потому что имя пользователя может быть другим, или имя проекта, или местоположение, или много другихвещи.

Таким образом, это означает, что строка кода, подобная этой, внутри любого класса больше не действительна.

BufferedReader reader = new BufferedReader(new FileReader("/home/kevin/IdeaProjects/ApplicazioniWeb/htmlfiles/reply1.html"))

Затем я попытался с относительными путями:

BufferedReader reader = new BufferedReader(new FileReader("./htmlfiles/reply1.html"))

Это работает "хорошо", если я запускаю его из Intellij (из-за магии), но если я хочу запустить его старым добрым способом из консоли:

java ch.miao.webapp.server.Server

, чтобы заставить его работать, я должен изменитьОЧЕРЕДНОЙ РАЗ!пути внутри моих классов, и в зависимости от того, какую IDE я использую, могут измениться, потому что inetellij помещает все вещи в out/production/..., но другие IDE имеют разные места, и это кошмар, если вы работаете в команде!

Итак, я хочу знать, есть ли общее решение, где я могу просто запустить свою программу из IDE или сформировать командную строку и сформировать любую другую рабочую станцию ​​после того, как я клонировал свой проект из git, без необходимости изменять пути к файлам.

Thx:)

1 Ответ

0 голосов
/ 23 сентября 2019

Вы можете использовать системное свойство Java под названием «user.dir».Его имя может вводить в заблуждение, поскольку оно указывает на каталог, где была запущена JVM.

String workingDirectory = System.getProperty("user.dir");
File file = new File(workingDirectory + File.separator + "htmlfiles" + File.separator + "reply1");
...