Рубрики
Без рубрики

Как получить текущий рабочий каталог на Java

В Java мы можем использовать “System.getProperty(“user.dir”)”, чтобы получить текущий рабочий каталог, каталог, из которого была запущена ваша программа.

Автор оригинала: 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-ввод-вывод

Рекомендации

Оригинал: “https://mkyong.com/java/how-to-get-the-current-working-directory-in-java/”