Автор оригинала: mkyong.
В Java мы можем использовать System.getProperty("user.dir") для получения текущего рабочего каталога, каталога, из которого была запущена ваша программа.
String dir = System.getProperty("user.dir");
// directory from where the program was launched
// e.g /home/mkyong/projects/core-java/java-io
System.out.println(dir);
Одна из хороших сторон этого системного свойства user.dir мы можем легко переопределить системное свойство с помощью аргумента -D , например:
java -Duser.dir=/home/mkyong/ -jar abc.jar
1. Рабочий каталог
В приведенной ниже программе показаны различные способы, такие как Файл , Пути , Файловые системы или системное свойство для получения текущего рабочего каталога; все методы вернут один и тот же результат.
package com.mkyong.io.howto;
import java.io.File;
import java.nio.file.FileSystems;
import java.nio.file.Paths;
public class CurrentWorkingDirectory {
public static void main(String[] args) {
printCurrentWorkingDirectory1();
printCurrentWorkingDirectory2();
printCurrentWorkingDirectory3();
printCurrentWorkingDirectory4();
}
// System Property
private static void printCurrentWorkingDirectory1() {
String userDirectory = System.getProperty("user.dir");
System.out.println(userDirectory);
}
// Path, Java 7
private static void printCurrentWorkingDirectory2() {
String userDirectory = Paths.get("")
.toAbsolutePath()
.toString();
System.out.println(userDirectory);
}
// File("")
private static void printCurrentWorkingDirectory3() {
String userDirectory = new File("").getAbsolutePath();
System.out.println(userDirectory);
}
// FileSystems
private static void printCurrentWorkingDirectory4() {
String userDirectory = FileSystems.getDefault()
.getPath("")
.toAbsolutePath()
.toString();
System.out.println(userDirectory);
}
}
Выход
/home/mkyong/projects/core-java/java-io /home/mkyong/projects/core-java/java-io /home/mkyong/projects/core-java/java-io /home/mkyong/projects/core-java/java-io
Обычно мы используем System.getProperty("user.dir") для получения текущего рабочего каталога.
2. Рабочий каталог для файла JAR?
Не используйте System.getProperty ("user.dir") , Файл или Путь для доступа к файлу, который находится внутри файла JAR , это не сработает. Вместо этого мы должны использовать getClassLoader().getResourceAsStream() .
// get a file from the resources folder, root of classpath in JAR
private InputStream getFileFromResourceAsStream(String fileName) {
// The class loader that loaded the class
ClassLoader classLoader = getClass().getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(fileName);
// the stream holding the file content
if (inputStream == null) {
throw new IllegalArgumentException("file not found! " + fileName);
} else {
return inputStream;
}
}
Примечание Приведенный выше код извлечен из этого Прочитайте файл из папки ресурсов . Обратитесь к примеру 2 для доступа к файлу, который находится внутри файла JAR.
Скачать Исходный Код
$клон git $клон git
$cd java-ввод-вывод
Рекомендации
- Java – Чтение файла из папка ресурсов
- Файл JavaDoc
- Путь JavaDoc
- Как отобразить все системные свойства
- Википедия – Рабочий каталог
Оригинал: “https://mkyong.com/java/how-to-get-the-current-working-directory-in-java/”