我借助File.Copy()
方法将图像文件从一个文件夹复制到另一个文件夹。
我需要在复制的图像文件粘贴到文件夹之前为其提供唯一的文件名。
知道如何实现这个吗?
答案 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