Как использовать относительный путь вместо абсолютного пути? - PullRequest
3 голосов
/ 18 ноября 2010

Итак, у меня странная проблема с Java.

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

Я пишу файлы так:* где outfile - это что-то вроде 'out.txt' (т. е. имя файла, в который мы хотим, чтобы вывод выводился)мои другие файлы.

Я что-то не так делаю?Или как я могу получить файлы, хранящиеся в соответствующем каталоге?

Ответы [ 4 ]

5 голосов
/ 18 ноября 2010
FileWriter fw = new FileWriter("./" + outfile,true);

или

FileWriter fw = new FileWriter("~/" + outfile,true);

Я бы попробовал это.

4 голосов
/ 18 ноября 2010

Рабочий каталог - это то место, откуда вы запускаете программу, т. Е. Где вы вызываете java YourClass, поэтому, когда вы захотите записать файлы, относящиеся к исполняемому классу, вам нужно будет знать текущий каталог и добавить оттуда относительный путь, например

Итак, если у вас есть класс test.YourClass и вы запускаете приложение из исходного корня, т.е.

java test.YourClass

, вы можете найти абсолютный путь к каталогуВаш файл класса находится в системном свойстве user.dir и имени пакета классов следующим образом:

public class YourClass {

public void printPath() {
    String path = String.format("%s/%s", System.getProperty("user.dir"), this.getClass().getPackage().getName().replace(".", "/"));
    System.out.println(path);
}

}

3 голосов
/ 18 ноября 2010

Java сохранит файлы относительно текущего рабочего каталога. Вы находитесь в своем домашнем каталоге, когда запускаете программу?

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

0 голосов
/ 18 ноября 2010

установите свойство user.dir в командной строке или просто запустите из каталога, с которым вы хотите, чтобы все было относительно (посредством cd-ing)

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