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

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

29 голосов
/ 19 августа 2008

Я работаю над программой, которая должна создать несколько временных папок для приложения. Они не будут видны пользователю. Приложение написано на VB.net. Я могу подумать о нескольких способах сделать это, таких как добавочное имя папки или случайное нумерованное имя папки, но мне было интересно, как другие люди решают эту проблему?

Ответы [ 13 ]

0 голосов
/ 13 сентября 2016

@ JonathanWright предполагает, что CreateDirectory не будет работать, когда папка уже есть. Если я читаю Directory.CreateDirectory, он говорит: «Этот объект возвращается независимо от того, существует ли каталог по указанному пути». Это означает, что вы не обнаруживаете папку, созданную между проверкой, существует и фактически создает.

Мне нравится CreateDirectoryTransacted (), предложенный @DanielTrebbien, но эта функция устарела.

Единственное оставшееся решение, которое я вижу, это использовать c api и вызывать там ' CreateDirectory ', так как это приводит к ошибке, если папка существует, если вам действительно нужно быть уверенным, что она охватывает всю расу состояние. Это приведет к чему-то вроде этого:

Private Function GetTempFolder() As String
    Dim folder As String
    Dim succes as Boolean = false
    Do While not succes
        folder = Path.Combine(Path.GetTempPath, Path.GetRandomFileName)
        success = c_api_create_directory(folder)
    Loop
    Return folder
End Function
0 голосов
/ 02 сентября 2013
Dim NewFolder = System.IO.Directory.CreateDirectory(IO.Path.Combine(IO.Path.GetTempPath, Guid.NewGuid.ToString))
0 голосов
/ 19 августа 2008

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

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