使用.NET从设备拖动文件并复制到本地硬盘驱动器

使用.NET从设备拖动文件并复制到本地硬盘驱动器,.net,drag-and-drop,filestream,.net,Drag And Drop,Filestream,我使用这段代码将拖拽的文件捕获到我的表单中,并将它们复制到特定的文件夹中(我没有执行复制过程,但我使用的是-FileSystem.CopyDirectory(copyFileDetails.Dir.FullName,copyFileDetails.Target,UIOption.AllDialogs)和FileSystem.CopyFile(file,newFileName,UIOption.AllDialogs); 现在,当我将一个文件拖到表单中时,我得到了文件名(string[]files)

我使用这段代码将拖拽的文件捕获到我的表单中,并将它们复制到特定的文件夹中(我没有执行复制过程,但我使用的是-
FileSystem.CopyDirectory(copyFileDetails.Dir.FullName,copyFileDetails.Target,UIOption.AllDialogs)和FileSystem.CopyFile(file,newFileName,UIOption.AllDialogs);

现在,当我将一个文件拖到表单中时,我得到了文件名(string[]files),并且可以将其复制到硬盘中

但是,当从设备(比如照相机)拖动文件时,我得到的是一个文件流,我不知道如何将其转换为与原始文件同名的文件。 我还需要它来支持大文件和文件夹


如何实现此功能?

请尝试以下代码从filegroupdescriptor读取文件名:

Dim ioStream As System.IO.Stream = DirectCast(e.Data.GetData("FileGroupDescriptor"), System.IO.Stream)
Dim contents As Byte() = New [Byte](511) {}
ioStream.Read(contents, 0, 512)
ioStream.Close()
Dim sb As New System.Text.StringBuilder()
Dim i As Integer = 76
While contents(i) <> 0
    sb.Append(CChar(ChrW(contents(i))))
    i += 1
End While

filename = sb.ToString()
Dim ioStream As System.IO.Stream=DirectCast(e.Data.GetData(“FileGroupDescriptor”)、System.IO.Stream)
Dim内容为Byte()=New[Byte](511){}
读取(内容,0,512)
ioStream.Close()
将sb设置为新系统。Text.StringBuilder()
尺寸i为整数=76
而内容(i)0
sb.追加(CChar(ChrW(目录(一)))
i+=1
结束时
filename=sb.ToString()
Dim ioStream As System.IO.Stream = DirectCast(e.Data.GetData("FileGroupDescriptor"), System.IO.Stream)
Dim contents As Byte() = New [Byte](511) {}
ioStream.Read(contents, 0, 512)
ioStream.Close()
Dim sb As New System.Text.StringBuilder()
Dim i As Integer = 76
While contents(i) <> 0
    sb.Append(CChar(ChrW(contents(i))))
    i += 1
End While

filename = sb.ToString()