如何在临时目录以外的目录中创建临时文件?

6

我已经编写了一些代码,旨在将文件写入临时目录,然后将其复制到永久位置,但是发现这样做会在复制命令上创建一个与权限相关的错误。 代码如下:

 string tempPath = Path.GetTempFileName();
 Stream theStream = new FileStream(tempPath, FileMode.Create);

  // Do stuff.

  File.Copy(tempPath, _CMan.SavePath, true);
  File.Delete(tempPath);

我模糊地记得有一个API调用可以创建一个临时文件到指定的目录(通过参数传递)。但是,那只是我VB 6时代的模糊记忆。

那么,如何在除Windows定义的临时目录之外的目录中创建临时文件呢?

3个回答

17
Path.Combine(directoryYouWantTheRandomFile, Path.GetRandomFileName())

3
你也可以使用 GetTempFileName Win32 API 函数来实现此功能:
<DllImport("kernel32.dll")> _
Private Shared Function GetTempFileName(ByVal lpPathName As String, ByVal lpPrefixString As String, ByVal uUnique As Integer, ByVal lpTempFileName As StringBuilder) As Integer

End Function

Sub CreateFile()
    Const path As String = "C:\MyTemp"
    Const prefix As String = "tmp"
    Dim fileName As New StringBuilder(576)
    Dim result As Integer = GetTempFileName(path, prefix, 0, fileName)
End Sub

3

你的问题有些偏离主题,但也许是因为你在复制之前没有关闭流?如果这真的是一个权限问题,在打开流时似乎会出现基于权限的问题。


这个答案应该是对问题的评论。 - Kent
1
谢谢Kent,6年前当我回答这个问题时,情况并不是那么明确。 - Moose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接