我的临时文件应该写到哪里?

15

我有很多代表PDF的byte[]。需要在应用程序启动时加载每个字节数组,并在我的GUI上显示缩略图。到目前为止,我已经成功地使用以下方法将文件写入临时位置:

System.IO.Path.GetTempPath();

然后,使用这个路径获取所有的PDF文件,使用以下方式将它们写入:

System.IO.File.WriteAllBytes(fileName, arrayOfPdfs[i]);
然后进入该目录,获取所有PDF文件并在我的应用程序中将它们转换为缩略图。问题是我只想要暂时存储位置放置的PDF文件,那么我该如何存储这些PDF文件,或者我甚至可以将它们存储在哪里,以便我知道当我开始将它们转换为缩略图时,正在读取的文件就是我刚刚写入的文件?这样我就可以确保用户只查看与他们在我的系统上搜索相关的PDF文件。谢谢。
5个回答

28

在基本的临时目录中建立一个随机命名的目录:

string directoryName = Path.GetRandomFileName();
Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), directoryName));

将您的文件存储在那里。


为什么这是更好的答案? - dreamwork801

8
我建议在用户的操作系统提供的应用程序数据/本地应用程序数据文件夹中,为你的应用程序使用ApplicationData/LocalApplicationData文件夹。
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

当然,如果存储不需要长时间持久化(真正的临时),那么您可以使用临时文件夹并在其中创建一个文件夹来隔离您的文件。

1
但这可能会带回C: defaultuser文件夹,而不是每个人都有对其的写访问权限。 - Fandango68

1
你能在临时路径中创建一个子目录吗? string dir = System.IO.Path.GetTempPath() + "\\<searchstring>;

0
使用 Path.GetTempFileName 并在会话期间跟踪分配的临时文件。程序退出时应进行清理。

0

您可以采取以下两种方式:

  • 记录第一项和最后一项的创建时间,然后仅编辑在该创建窗口中创建的文件
  • 将文件移动到临时文件夹,创建缩略图,然后将它们移动到它们应该在的文件夹中,确保在操作结束时临时文件夹为空

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