2010-11-17 6 views
3

Так что у меня странная проблема с Java.Как использовать относительный путь вместо абсолютного пути?

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

я пишу файлы так:

FileWriter fw = new FileWriter(outfile,true); 
fw.write(data); 
fw.close(); 

где выходной_файл что-то вроде «out.txt» (то есть имя файла, который мы хотим выход идти в).

Проблема в том, что файл создан в /home/me/ вместо пути к другим моим файлам.

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

+3

Относительный * к чему *? –

+1

Время? http://en.wikipedia.org/wiki/Special_relativity –

+0

Возможно, относительный - это неправильный термин. Я имею в виду в моем рабочем каталоге (то есть где были созданы файлы, где его выполнялось и т. Д.) – Blackbinary

ответ

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

или

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

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

+0

Это работает для меня: FileWriter fw = new FileWriter ("./" + outfile, true); –

3

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

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

+0

Я думаю, это была проблема. Я собирал все свои файлы по папке (так что я был в своем домашнем каталоге, а не в шаге внутри папки), и я использовал пакет.AClass для запуска. Поэтому я думаю, что ответы на это. Благодарю. – Blackbinary

0

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

4

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

Так что если у вас есть класс test.YourClass и запустить приложение от корня источника, т.е.

ява 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); 
} 

}

Смежные вопросы