Работа с filepath в коде Java - PullRequest
       11

Работа с filepath в коде Java

0 голосов
/ 02 ноября 2010

Я сослался на этот пример и создал приложение сервлета.

Он прекрасно работает с путями TMP_DIR & DEST_DIR, которые упоминаются в коде (я создал папку с именем tmp на диске C, а также я создал папку с именем files в папке моего приложения.

Теперь я перемещаю код на машину с Linux, где это не работает, поскольку нет диска с именем C: там. Я попытался заменить c:\\tmp кода на /tmp (и создал папку tmp) внутри папки приложения. Но он не работает. Как я могу сделать этот код универсальным? Пожалуйста, сообщите.

Ответы [ 3 ]

2 голосов
/ 02 ноября 2010

Если вам нужен временный каталог, используйте http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html и ищите getTempDirectory ().Это должно работать где угодно

Так что вам нужен системный временный каталог, который предоставляется системой.Вы можете получить это либо по пути, либо по фактическому файлу.(IOUtils предоставляет оба подхода).Вот документы IOUtil: getTempDirectory

public static File getTempDirectory()

    Returns a File representing the system temporary directory.

    Returns:
        the system temporary directory.

Так что если вы напишите:

File myTempFile = IOUtils.getTempDirectory();

, тогда myTempFile будет там, куда вы хотите писать.

Если некоторыеприложение запрашивает каталог по имени, тогда вы можете использовать getTempDirectoryPath (), который даст путь.

В вашем примере я бы написал:

private static final String TMP_DIR_PATH = IOUtils.getTempDirectoryPath();

или используя подход @ dogbane:

private static final String TMP_DIR_PATH = System.getProperty("java.io.tmpdir");

Я ожидаю, что они дадут тот же ответ.

Если вы все еще в замешательстве, продолжайте спрашивать - вот для чего ТАК!

ОБНОВЛЕНИЕ: Если выДелая что-нибудь с файлами, стоит ознакомиться с Apache FileUtils и IOUtils.Есть несколько вещей, которые JDK не делает хорошо или естественно, и Apache предоставляет лучшую поддержку.

2 голосов
/ 02 ноября 2010

Местоположение каталога, специфичного для платформы, используемого для хранения временных файлов, определяется свойством java.io.tmpdir.

Итак, в вашем коде вы можете использовать:

private static final String TMP_DIR_PATH = System.getProperty("java.io.tmpdir")
2 голосов
/ 02 ноября 2010

Используйте File.pathSeparator для получения системно-зависимого разделителя пути.

Отредактировано:

Если вы просто хотите временный каталог, используйте File.createTempFile(..)

Пример пути к файлу: http://www.exampledepot.com/egs/java.io/ConstructFilePath.html

Пример временного файла: http://www.exampledepot.com/egs/java.io/CreateTempFile.html

Отредактировано:

Сохранение файла в среде сервлета: здесь

...