如何创建唯一的文件名?

时间:2012-07-29 08:42:25

标签: .net vb.net winforms

我借助File.Copy()方法将图像文件从一个文件夹复制到另一个文件夹。

我需要在复制的图像文件粘贴到文件夹之前为其提供唯一的文件名。

知道如何实现这个吗?

6 个答案:

答案 0 :(得分:5)

您可以使用Path.GetTempFileName

更多信息:http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename(v=vs.100).aspx

来自链接的引用:

  

“在磁盘上创建一个唯一命名的零字节临时文件,并返回该文件的完整路径。”

答案 1 :(得分:5)

Eyossi的答案应该是公认的解决方案,但另一种选择: -

您可以使用guid创建唯一名称​​("此类标识符的复制概率非常低。")

Dim filename As String = Guid.NewGuid().ToString + ".png"

答案 2 :(得分:4)

这是另一种方法

fileName = User_Appended_File_Name & "_" & DateTime.Now.ToString("yyyyMMdd_HH_mm_ss")

它会创建一个相当可识别的文件名,还有一个额外的好处,即知道它何时被创建,是一个很大的时间戳。

编辑:如果文件保存率快于1秒,则无效。

答案 3 :(得分:1)

我建议使用Path.GetRandomFileName()

先前接受的答案是使用Path.GetTempFileName创建文件。如问题所述,当该文件将成为文件复制操作的目标时,这是不理想的。

  

与GetTempFileName不同,GetRandomFileName不会创建文件。什么时候   文件系统的安全性至关重要,此方法应为   代替GetTempFileName。

来源: https://msdn.microsoft.com/en-us/library/system.io.path.getrandomfilename(v=vs.110).aspx

示例:

Imports System.IO

Module Module1

    Sub Main()
        Dim fileName = Path.GetRandomFileName()
        Console.WriteLine("Random file name is " & fileName)
    End Sub

End Module

' This code produces output similar to the following:   
' Random file name is w143kxnu.idj

答案 4 :(得分:0)

您可以使用当前日期时间作为文件名。

答案 5 :(得分:0)

要创建UNIQUE文件(图像或其他),可以在fileName中添加时间戳。

TimeStamp = DateDiff("s", "01/1/1970 12:00:00 AM", DateTime)
FileName = "MyImageName_" & TimeStamp & "YourEXtensionFile";

我不是VB的专家,但对于File.Copy信息,请阅读MSDN FAQ

复制其他文件夹中的文件时,请不要忘记在复制之前验证文件夹是否存在。

If FileFolderExists("YouFolderForCopyImage") Then
    MsgBox "Folder exists!"
    'you can use Copy Function
Else
    MsgBox "Folder does not exist!"
    'Create your folder and use copy function
End If