我编写了一些应该将文件写入临时目录的代码,然后将其复制到永久位置,但发现这样做会在复制命令上创建与权限相关的错误。代码如下所示:
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定义的临时目录以外的目录中创建临时文件?
答案 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)
根据你的问题有点偏离基础,但是你可能只是在尝试复制之前没有关闭流?好像你在打开流时遇到基于权限的问题,如果它确实是权限问题。