private bool SaveFilesAndFoldersToTree(FolderTree tree, string rootFolder) { tree.FolderName = Path.GetFileName(rootFolder); var filesInFolder = Directory.GetFiles(rootFolder); if (filesInFolder != null) { tree.files = new List <FileInFolder>(); foreach (var f in filesInFolder) { tree.files.Add(new FileInFolder(f)); } var subFolders = Directory.GetDirectories(rootFolder); if (subFolders != null) { tree.folders = new List <FolderTree>(); foreach (var dir in subFolders) { FolderTree subDirectory = new FolderTree(); tree.folders.Add(subDirectory); SaveFilesAndFoldersToTree(subDirectory, dir); } } return(true); } else { return(false); } }
private void buttonContinueSerialization_Click(object sender, EventArgs e) { fileName = textBoxFileName.Text; if (fileName.Length < 1) { MessageBox.Show("Please enter a file name"); } else { if (File.Exists(Directory.GetCurrentDirectory() + "\\" + fileName + ".dat")) { MessageBox.Show("File with such name already exists, please choose another"); } else { FolderTree tree = new FolderTree(); if (SaveFilesAndFoldersToTree(tree, selectedFolder)) { if (SerializeFolder(tree)) { MessageBox.Show("Serialization was completed successfully"); } else { MessageBox.Show("Error occurred. Please try again."); } this.Close(); } } } }
private bool CreateFilesAndFoldersFromTree(FolderTree tree, string path) { path += "\\" + tree.FolderName; Directory.CreateDirectory(path); var filesInFolder = tree.files; if (filesInFolder != null) { foreach (var f in filesInFolder) { File.WriteAllBytes(path + "\\" + f.Name, f.FileData); } var subFolders = tree.folders; if (subFolders != null) { foreach (var dir in subFolders) { CreateFilesAndFoldersFromTree(dir, path); } } return(true); } else { return(false); } }
private bool SerializeFolder(FolderTree folder) { BinaryFormatter formatter = new BinaryFormatter(); using (FileStream fs = new FileStream(fileName + ".dat", FileMode.OpenOrCreate)) { formatter.Serialize(fs, folder); } return(true); }
private void buttonContinueDeserialization_Click(object sender, EventArgs e) { string selectedFile = listBoxSerializedFiles.SelectedItem.ToString(); if (selectedFile.Length < 1 || selectedFile == null) { MessageBox.Show("Plese select some file from list"); } else { using (var fbDialog = new FolderBrowserDialog()) { fbDialog.Description = "Please choose the folder to deserialize file"; //fbDialog.SelectedPath = @"C:\"; DialogResult result = fbDialog.ShowDialog(); if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbDialog.SelectedPath)) { BinaryFormatter formatter = new BinaryFormatter(); using (FileStream fs = new FileStream(selectedFile, FileMode.OpenOrCreate)) { FolderTree deselializedTree = (FolderTree)formatter.Deserialize(fs); string path = fbDialog.SelectedPath; if (deselializedTree != null && deselializedTree.FolderName.Length > 0) { if (CreateFilesAndFoldersFromTree(deselializedTree, path)) { MessageBox.Show("Deserialization was completed successfully"); } else { MessageBox.Show("Error occurred. Please try again."); } this.Close(); } } } } } }