当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中创建临时文件(用于写入)?

如何解决《如何在C#中创建临时文件(用于写入)?》经验,为你挑选了2个好方法。



1> Jordão..:

我以前也有同样的要求,我已经创建了一个小类来解决它:

public sealed class TemporaryFile : IDisposable {
  public TemporaryFile() : 
    this(Path.GetTempPath()) { }

  public TemporaryFile(string directory) {
    Create(Path.Combine(directory, Path.GetRandomFileName()));
  }

  ~TemporaryFile() {
    Delete();
  }

  public void Dispose() {
    Delete();
    GC.SuppressFinalize(this);
  }

  public string FilePath { get; private set; }

  private void Create(string path) {
    FilePath = path;
    using (File.Create(FilePath)) { };
  }

  private void Delete() {
    if (FilePath == null) return;
    File.Delete(FilePath);
    FilePath = null;
  }
}

它会在您指定的文件夹或系统临时文件夹中创建临时文件.它是一个一次性类,所以在它的生命结束时(Dispose或者是析构函数),它会删除文件.您将通过该FilePath属性获取创建的文件(和路径)的名称.您当然可以扩展它以打开文件进行写入并返回其关联FileStream.

示例用法:

using (var tempFile = new TemporaryFile()) {
    // use the file through tempFile.FilePath...
}


剑是危险的吗?或者是使用武士的武士?

2> 小智..:

Path.GetTempFileName和Path.GetTempPath.然后,您可以使用此链接将加密数据读/写到文件中.

注意,.NET不是关键安全应用程序的最佳平台.您必须精通CLR的工作方式,以避免可能将您的关键数据泄露给黑客的一些陷阱.

编辑:关于竞争条件...您可以使用GetTempPath,然后使用创建临时文件名

Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Guid.NewGuid().ToString(), ".TMP"))

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有