Как я создаю каталог в рамках текущего рабочего каталога в Java

На основе Вашей обновленной проблемы DWMAPI.dll является, вероятно, не Вашей проблемой. Уокер зависимости будет всегда давать Вам, что ошибка каждый раз, когда Вы связываетесь с mshtml как она всегда, проверяет задержку загруженный DLLs.

В этой точке мое лучшее предположение - то, что у Вас есть свой набор проекта для динамичной загрузки библиотек времени выполнения, и путь поиска для DLLs изменяется языком майя. Таким образом, это может быть неспособно найти DLL времени выполнения MSVC. Я не разработал плагины майя в долгое время, но у меня была та проблема с другими приложениями, которые недавно имеют сменный DLLs.

Попытка, изменяющая Ваши настройки в C/C++> Генерация кода-> Библиотека времени выполнения к Многопоточному а не Многопоточному DLL.

, Кроме которого можно попытаться играть с Зависимостью Walker, чтобы заставить его использовать те же пути поиска в качестве языка майя и видеть, можно ли придумать другую проблему зависимости.

Как последнее прибежище можно запустить язык майя в отладчике и установить точку останова на LoadLibrary и узнать, какая библиотека не загружается тот путь.

6
задан Daniel Fortunov 15 October 2009 в 07:18
поделиться

2 ответа

В пакете java.io нет класса Directory , но вы можете использовать метод mkdir () в файле вместо этого:

(new File("Foo")).mkdir()

Обратите внимание, что mkdir () имеет два отдельных режима отказа:

  1. «Если диспетчер безопасности существует и его метод checkWrite () не разрешает именованный каталог, который будет создан », тогда будет сгенерировано SecurityException .
  2. Если операция завершится неудачно по другой причине, mkdir () вернет false. (Более конкретно, он вернет истину , если и только если каталог был создан.)

Пункт 1 в порядке - если у вас нет разрешения, бросайте. Пункт 2 несколько неоптимален по трем причинам:

  1. Вам необходимо проверить логический результат этого метода. поведение .NET Directory.CreateDirectory () , который ничего не делает, если каталог существует. В этом есть смысл - "создать каталог ";" хорошо, каталог создано ". Имеет ли значение, был ли он создано сейчас или ранее; этим процесс или другой? Если ты действительно заботился об этом, разве вы не спросили бы другое вопрос: «Этот каталог существует?»

    Следующее предостережение заключается в том, что mkdir () не будет создавать более одного каталога за раз. Для моего простого примера каталога с именем «Foo» это нормально; однако, если вы хотите создать каталог с именем Bar в каталоге Foo (т.е. создать каталог «Foo / Bar»), вы должны не забыть использовать вместо него метод mkdirs () .

    Итак, чтобы Чтобы обойти все эти предостережения, вы можете использовать вспомогательный метод, например следующий:

    public static File createDirectory(String directoryPath) throws IOException {
        File dir = new File(directoryPath);
        if (dir.exists()) {
            return dir;
        }
        if (dir.mkdirs()) {
            return dir;
        }
        throw new IOException("Failed to create directory '" + dir.getAbsolutePath() + "' for an unknown reason.");
    }
    
8
ответ дан 10 December 2019 в 02:50
поделиться

Я видел немного более сжатую форму вашего метода createDirectory :

File f = new File(xyz);
if (!f.exists() && !f.mkdirs()) throw new IOException("Could not create directory " + f);

Возможно, также стоит проверить, существует ли f , но не является каталогом.

1
ответ дан 10 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: