FileWork examples were added
This commit is contained in:
139
DataAccess/FileDialogs/FileStorage.cs
Normal file
139
DataAccess/FileDialogs/FileStorage.cs
Normal file
@@ -0,0 +1,139 @@
|
||||
using DataAccess.FileDialogs;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DataAccess.FileDialogs
|
||||
{
|
||||
internal class FileStorage
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
public class FileStorageManager
|
||||
{
|
||||
// Dictionary to store files with unique IDs as keys
|
||||
private readonly Dictionary<Guid, OpenedFile> _openedFiles = new Dictionary<Guid, OpenedFile>();
|
||||
|
||||
// Method to open a file and add it to the storage
|
||||
public Guid OpenFile()
|
||||
{
|
||||
using (OpenFileDialog openFileDialog = new OpenFileDialog())
|
||||
{
|
||||
openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
|
||||
openFileDialog.Multiselect = true; // Allow multiple file selection
|
||||
openFileDialog.Title = "Select Files";
|
||||
|
||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
foreach (var filePath in openFileDialog.FileNames)
|
||||
{
|
||||
var fileId = Guid.NewGuid();
|
||||
var openedFile = new OpenedFile(fileId, filePath);
|
||||
|
||||
// Add to storage
|
||||
_openedFiles[fileId] = openedFile;
|
||||
|
||||
Console.WriteLine($"File '{openedFile.FilePath}' opened with ID: {fileId}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Guid.Empty;
|
||||
}
|
||||
|
||||
// Method to get an opened file by ID
|
||||
public OpenedFile GetFile(Guid fileId)
|
||||
{
|
||||
if (_openedFiles.TryGetValue(fileId, out var openedFile))
|
||||
{
|
||||
return openedFile;
|
||||
}
|
||||
|
||||
throw new KeyNotFoundException("File not found.");
|
||||
}
|
||||
|
||||
// Method to close a file by ID
|
||||
public void CloseFile(Guid fileId)
|
||||
{
|
||||
if (_openedFiles.ContainsKey(fileId))
|
||||
{
|
||||
_openedFiles.Remove(fileId);
|
||||
Console.WriteLine($"File with ID: {fileId} has been closed.");
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new KeyNotFoundException("File not found.");
|
||||
}
|
||||
}
|
||||
|
||||
// Method to read content of an opened file by ID
|
||||
public string ReadFileContent(Guid fileId)
|
||||
{
|
||||
var openedFile = GetFile(fileId);
|
||||
return File.ReadAllText(openedFile.FilePath);
|
||||
}
|
||||
|
||||
// Method to list all opened files
|
||||
public void ListOpenedFiles()
|
||||
{
|
||||
foreach (var file in _openedFiles.Values)
|
||||
{
|
||||
Console.WriteLine($"File ID: {file.Id}, Path: {file.FilePath}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Class representing an opened file
|
||||
public class OpenedFile
|
||||
{
|
||||
public Guid Id { get; }
|
||||
public string FilePath { get; }
|
||||
|
||||
public OpenedFile(Guid id, string filePath)
|
||||
{
|
||||
Id = id;
|
||||
FilePath = filePath;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Program
|
||||
{
|
||||
[STAThread] // Required for OpenFileDialog
|
||||
static void Main()
|
||||
{
|
||||
var fileStorageManager = new FileStorageManager();
|
||||
|
||||
// Open files and add them to the storage
|
||||
fileStorageManager.OpenFile();
|
||||
|
||||
// List all opened files
|
||||
Console.WriteLine("\nOpened Files:");
|
||||
fileStorageManager.ListOpenedFiles();
|
||||
|
||||
// Example: Read content of the first opened file (if any)
|
||||
var openedFiles = new List<Guid>(fileStorageManager._openedFiles.Keys);
|
||||
if (openedFiles.Count > 0)
|
||||
{
|
||||
var firstFileId = openedFiles[0];
|
||||
Console.WriteLine($"\nReading content of the first opened file (ID: {firstFileId}):");
|
||||
string content = fileStorageManager.ReadFileContent(firstFileId);
|
||||
Console.WriteLine(content);
|
||||
}
|
||||
|
||||
// Close all files
|
||||
foreach (var fileId in openedFiles)
|
||||
{
|
||||
fileStorageManager.CloseFile(fileId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user