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

时间:2009-03-23 17:12:47

标签: c# .net

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

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

  // Do stuff.

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

我朦胧地记得我可以在指定的目录中创建一个API调用,作为参数传递。但是,这是我6天的微弱记忆。

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

3 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分: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

答案 2 :(得分:2)

根据你的问题有点偏离基础,但是你可能只是在尝试复制之前没有关闭流?好像你在打开流时遇到基于权限的问题,如果它确实是权限问题。