public TempFile CreateOrOpenFile(string name) { string filePath = System.IO.Path.Combine(_path, name); TempRoot.CreateStream(filePath, FileMode.OpenOrCreate); return(_root.AddFile(new DisposableFile(filePath))); }
internal TempFile(string prefix, string extension, string directory, string callerSourcePath, int callerLineNumber) { while (true) { if (prefix == null) { prefix = System.IO.Path.GetFileName(callerSourcePath) + "_" + callerLineNumber.ToString() + "_"; } _path = System.IO.Path.Combine(directory ?? TempRoot.Root, prefix + Guid.NewGuid() + (extension ?? ".tmp")); try { TempRoot.CreateStream(_path, FileMode.CreateNew); break; } catch (PathTooLongException) { throw; } catch (DirectoryNotFoundException) { throw; } catch (IOException) { // retry } } }
private TempDirectory(string path, TempRoot root) { Debug.Assert(path != null); Debug.Assert(root != null); _path = path; _root = root; }
protected TempDirectory(TempRoot root) : this(CreateUniqueDirectory(TempRoot.Root), root) { }
public DisposableDirectory(TempRoot root) : base(root) { }