Создание временных папок

Попробуйте следующее:

 <style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
    <item name="windowNoTitle">true</item>
30
задан Dan Halbert 29 May 2013 в 20:44
поделиться

10 ответов

Обновление: Добавленный Файл. Существует проверка на комментарий (2012 19 июня)

Вот - то, что я использовал в VB.NET. По существу то же, как представлено, кроме я обычно не хотел создавать папку сразу.

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

Private Function GetTempFolder() As String
    Dim folder As String = Path.Combine(Path.GetTempPath, Path.GetRandomFileName)
    Do While Directory.Exists(folder) or File.Exists(folder)
        folder = Path.Combine(Path.GetTempPath, Path.GetRandomFileName)
    Loop

    Return folder
End Function

Случайный Пример Имени файла:

C:\Documents and Settings\username\Local Settings\Temp\u3z5e0co.tvq

<час>

Вот изменение с помощью Гуида для получения временного имени папки.

Private Function GetTempFolderGuid() As String
    Dim folder As String = Path.Combine(Path.GetTempPath, Guid.NewGuid.ToString)
    Do While Directory.Exists(folder) or File.Exists(folder)
        folder = Path.Combine(Path.GetTempPath, Guid.NewGuid.ToString)
    Loop

    Return folder
End Function

гуид Пример:

C:\Documents and Settings\username\Local Settings\Temp\2dbc6db7-2d45-4b75-b27f-0bd492c60496

27
ответ дан Rick 27 November 2019 в 23:21
поделиться

Необходимо использовать System.IO.Path.GetTempFileName()

, Создает исключительно именованный, нулевой байт временный файл на диске и возвращает полный путь того файла.

можно использовать System.IO.Path.GetDirectoryName(System.IO.Path.GetTempFileName()) для получения только временной информации папки, и создать папки там

Они создаются в папке временного файла окон, и это, рассматривают лучшую практику

20
ответ дан juan 27 November 2019 в 23:21
поделиться

Просто для уточнения:

System.IO.Path.GetTempPath()

возвраты просто путь к папке к временной папке.

System.IO.Path.GetTempFileName()

возвраты полностью определенное имя файла (включая путь) так это:

System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetTempFileName())

избыточно.

8
ответ дан urini 27 November 2019 в 23:21
поделиться

Существует возможное состояние состязания когда:

  • создание временного файла с GetTempFileName(), удаление его и создание папки с тем же именем, или
  • использование GetRandomFileName() или Guid.NewGuid.ToString для именования папки и создания папки позже

С GetTempFileName() после удаления происходит, другое приложение могло успешно создать временный файл с тем же именем. Эти CreateDirectory() тогда перестал бы работать.

Точно так же между вызовом GetRandomFileName() и созданием каталога другой процесс мог создать файл или каталог с тем же именем, снова приводящим к CreateDirectory() сбой.

Для большинства приложений для временного каталога нормально перестать работать из-за состояния состязания. Это чрезвычайно редко, в конце концов. Для них могут часто игнорироваться эти гонки.

В мире сценариев оболочки Unix, создавая временные файлы и каталоги безопасным способом без гонок грандиозное предприятие. Много машин имеют несколько (враждебных) пользователей - думают, совместно использованный веб-хост - и много сценариев и приложений должен безопасно создать временные файлы и каталоги в общем/tmp каталоге. См. Безопасно Создающие Временные Файлы в Сценариях оболочки для обсуждения того, как безопасно создать временные каталоги из сценариев оболочки.

8
ответ дан Jonathan Wright 27 November 2019 в 23:21
поделиться

Что-то как...

using System.IO;

string path = Path.GetTempPath() + Path.GetRandomFileName();
while (Directory.Exists(path))
 path = Path.GetTempPath() + Path.GetRandomFileName();

Directory.CreateDirectory(path);
3
ответ дан Adam Wright 27 November 2019 в 23:21
поделиться

Вы могли генерировать GUID для своих временных имен папок.

2
ответ дан Andrew Rimmer 27 November 2019 в 23:21
поделиться

Пока название папки не должно быть значимым, как насчет того, чтобы использовать GUID для них?

1
ответ дан jwalkerjr 27 November 2019 в 23:21
поделиться

Можно использовать GetTempFileName для создания временного файла файл , затем удалить и воссоздать этот файл как каталог вместо этого.

Примечание: ссылка не работала, скопировать/вставить от: http://msdn.microsoft.com/en-us/library/aa364991 (По сравнению с 85) .aspx

1
ответ дан pix0r 27 November 2019 в 23:21
поделиться

Объединенные ответы от @adam-wright и pix0r будут работать лучшее, по моему скромному мнению:


using System.IO;

string path = Path.GetTempPath() + Path.GetRandomFileName();

while (Directory.Exists(path)) 
  path = Path.GetTempPath() + Path.GetRandomFileName();

File.Delete(path);
Directory.CreateDirectory(path);
1
ответ дан Brian G Swanson 27 November 2019 в 23:21
поделиться

Преимущество для использования Системы. IO.Path. GetTempFileName - то, что это будет файл в локальном пользователе (т.е. не бродящий) путь. Это точно, где Вы хотели бы его для полномочий и соображений безопасности.

0
ответ дан denis phillips 27 November 2019 в 23:21
поделиться
Другие вопросы по тегам:

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