/// <summary> /// Adds the file. /// </summary> /// <param name="file">The file.</param> public void AddFile(InMemoryVirtualFile file) { List <InMemoryVirtualFile> snapshot, newFiles; do { snapshot = files; newFiles = new List <InMemoryVirtualFile>(files.Where(x => x.FilePath != file.FilePath)) { file }; } while (!ReferenceEquals( Interlocked.CompareExchange(ref files, newFiles, snapshot), snapshot)); }
public void 新增資料夾() { var executingAssembly = Assembly.GetExecutingAssembly(); var rootPath = Path.GetDirectoryName(executingAssembly.Location); var content = "This is test string"; var subPath = "TestFolder"; var subPath1 = $"{subPath}/1/1_1/1_1_1"; var subPath2 = $"{subPath}/2"; var fileSystem = new FileSystemVirtualFiles(rootPath); fileSystem.EnsureDirectory(subPath1); fileSystem.EnsureDirectory(subPath2); fileSystem.AppendFile($"{subPath}/1.txt", content); var memoryFileSystem = new MemoryVirtualFiles(); // var memoryFileSystem1 = fileSystem.GetMemoryVirtualFiles(); // var nonDefaultValues = fileSystem.PopulateWithNonDefaultValues(memoryFileSystem); // var memoryFileSystem2 = memoryFileSystem.PopulateWith(fileSystem); var subFolder = new InMemoryVirtualDirectory(memoryFileSystem, subPath); var subFile = new InMemoryVirtualFile(memoryFileSystem, subFolder); memoryFileSystem.AddFile(subFile); //無法單獨加入資料夾 var subFolder1 = new InMemoryVirtualDirectory(memoryFileSystem, "1", subFolder); var subFolder2 = new InMemoryVirtualDirectory(memoryFileSystem, "1_1", subFolder1); subFolder2.AddFile("2.txt", content); var directories = memoryFileSystem.RootDirectory.Directories; var files = memoryFileSystem.Files; Console.WriteLine(); // // // memorySystem.AddFile(new InMemoryVirtualFile(fileSystem, directory)); // // // memorySystem.AppendFile($"{subPath1}/1.txt",content); // var files = memoryFileSystem.GetAllFiles(); }