Untitled
unknown
csharp
7 months ago
5.6 kB
2
Indexable
Never
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using SharpCompress.Archives; using SharpCompress.Archives.Zip; using SharpCompress.Common; namespace CourseWorkFinal { /// <summary> /// Класс для открытия файла проекта /// </summary> internal class FileManager { public string pathToDataBaseTable { get; private set; } public string pathToObjectPicture { get; set; } public string pathToTextFile { get; private set; } public string pathToFolder { get; private set; } public void GetFilesPath(string pathToFolder) { this.pathToFolder = pathToFolder; if (this.pathToFolder.Equals("")) { MessageBox.Show("Вы не указали путь к файлу", "Ошибка"); return; } pathToDataBaseTable = ""; pathToObjectPicture = ""; pathToTextFile = ""; int dbFilesCount = CountFilesOfSomeType("*.sqlite"); int pngFilesCount = CountFilesOfSomeType("*.png"); int textFilesCount = CountFilesOfSomeType("*.txt"); // Если в папке находится только один файл определенного типа, то он выбирается автоматически // Иначе пользователь должен выбрать нужный файл OpenFileDialog chooseFile = new OpenFileDialog(); chooseFile.InitialDirectory = pathToFolder; chooseFile.Multiselect = false; TryOpenFile(chooseFile, dbFilesCount, "Выберите таблицу координат Z", "*.sqlite"); TryOpenFile(chooseFile, pngFilesCount, "Выберите изображените объекта", "*.png"); TryOpenFile(chooseFile, textFilesCount, "Выберите текстовый файл с данными", ".txt"); } public int CountFilesOfSomeType(string type) { int count = Directory.GetFiles(pathToFolder, type).Length; return count; } public void TryOpenFile(OpenFileDialog chooseFile, int fileCount, string title, string filter) { if (fileCount > 1 || fileCount == 0) { SetChooseFileTitleAndFilter(title, filter, chooseFile); if (chooseFile.ShowDialog() == DialogResult.OK) { switch (filter) { case "*.sqlite": pathToDataBaseTable = Path.GetFullPath(chooseFile.FileName); break; case "*.png": pathToObjectPicture = Path.GetFullPath(chooseFile.FileName); break; case "*.txt": pathToTextFile = Path.GetFullPath(chooseFile.FileName); break; } } } else { switch (filter) { case "*.sqlite": pathToDataBaseTable = Path.GetFullPath(Directory.GetFiles(pathToFolder, "*.sqlite")[0]); break; case "*.png": pathToObjectPicture = Path.GetFullPath(Directory.GetFiles(pathToFolder, "*.png")[0]); break; case "*.txt": pathToTextFile = Path.GetFullPath(Directory.GetFiles(pathToFolder, "*.txt")[0]); break; } } } public void SetChooseFileTitleAndFilter(string title, string filter, OpenFileDialog chooseFile) { chooseFile.Title = title; chooseFile.Filter = filter; } public string[] GetDataFromTextFile() { string[] result = new string[4]; // В список заносятся все строки из текстового файла List<string> lines = File.ReadAllLines(pathToTextFile, Encoding.Unicode).ToList(); foreach (string line in lines) { //Если начинается с точности измерения, записываем полученную точность в результат if (line.StartsWith("Точность измерений")) { List<string> value = line.Split(' ').ToList(); result[0] = (value[2].Split('м')[0]); } if (line.StartsWith("Количество структурных блоков")) { List<string> value = line.Split(' ').ToList(); result[1] = (value[3]); } if (line.StartsWith("Количество геодезических марок, закрепленных в теле объекта")) { List<String> value = line.Split(' ').ToList(); result[2] = (value[7]); } } return result; } } }