Невозможно создать файл в C: \ TEMP - PullRequest
0 голосов
/ 22 октября 2009

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

    final File tmpDir = new File("C:/TEMP/", zipFile.getName());

    if(!tmpDir.mkdir() && tmpDir.exists()) {
        System.err.println("Cannot create: " + tmpDir);
        System.exit(0);
    }

Я получаю ошибку (не могу создать: C: \ TEMP \ aZipFile), однако, если я использую следующее:

    final File tmpDir = new File(System.getProperty("java.io.tmpdir"), zipFile.getName());

    if(!tmpDir.mkdir() && tmpDir.exists()) {
        System.err.println("Cannot create: " + tmpDir);
        System.exit(0);
    }

работает отлично. Моя проблема в том, что я хочу использовать C: \ TEMP, поскольку это согласуется с остальной частью проекта, над которым я работаю.

Опять же, я использую Java 1.4 в Windows XP и JDeveloper IDE.

Ответы [ 6 ]

3 голосов
/ 22 октября 2009
if(!tmpDir.mkdir() && tmpDir.exists())

Разве это не должно быть:

if(!tmpDir.mkdir() && !tmpDir.exists())
1 голос
/ 22 октября 2009

Почему бы не использовать File.createTempFile, не так ли вы пытаетесь заархивировать?

1 голос
/ 22 октября 2009

Хорошо, если System.getProperty("java.io.tmpdir") не возвращает 'C: \ TEMP', это не то же самое. Хотя я бы посоветовал использовать java.io.tmpdir, вы также можете убедиться, что C: \ TEMP существует, или создать его при необходимости: ``;

File temp = new File("C:/TEMP/");
if (!temp.exists()) temp.mkdir();
File tmpDir = new File(temp, zipFile.getName());

Кроме того, вы можете изменить свой код на

final File tmpDir = new File(System.getProperty("java.io.tmpdir"), zipFile.getName());

// note the change from mkdir to mkdirs
if(!tmpDir.mkdirs() && !tmpDir.exists()) {
    System.err.println("Cannot create: " + tmpDir);
    System.exit(0);
}

РЕДАКТИРОВАТЬ: Я только что видел ответ по атомной, и он прав: это !tmpDir.exists(), а не tmpDir.exists()

0 голосов
/ 22 октября 2009

Есть ли в временном каталоге файл с нужным именем, который заблокирован?

0 голосов
/ 22 октября 2009

Сравнивали ли вы результат System.getProperty ("java.io.tmpdir") с тем, что вы пытаетесь? Кроме того, в WindowsXP я бы выбрал «C: \ Temp \» в качестве имени каталога.

0 голосов
/ 22 октября 2009

Это потому, что у вас нет прав на запись в "C:/TEMP/" или папка TEMP не существует?

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