Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Деление строк в файле

05.09.2019, 14:12. Показов 5257. Ответов 129

Студворк — интернет-сервис помощи студентам
Здравствуйте формучане. Есть идея сделать приложение, которое будет делить строки. Суть такова:

1) На компьютере, в разных местах, находится много *.txt файлов в которых много строк.
2) Содержаться они в кодировке UTF-8.
3) Файлы необходимо выбирать по кнопочке непосредственно в программе.
4) После выбора файлов они добавляются в список файлов которые необходимо отредактировать. (Допустим все выбранные файлы с помощью fileDialog мы добавляем в gridList).
5) После добавления необходимых файлов, по нажатию на кнопочку "Выполнить", те файлы которые мы добавили редактируются, список обновляется.

Буду рад любой помощи.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.09.2019, 14:12
Ответы с готовыми решениями:

Деление строк массива по условию
Задан двумерный целочисленный массив F размером 9 на 9 элементов. Написать процедуру для деление на 10 элементов тех строк массива, которые...

Деление строк массива по условию
Задан двумерный целочисленный массив F размером 9 на 9 элементов. Написать процедуру для деление на 10 элементов тех строк массива, которые...

Чтение из файла строк и их деление по заданному сочетанию символов
Собственно сабж, имеется файл примерно такого содержания : "Название итема1(строка)" ^^ число1(int) ^^ число2(int) ^^ число3(int) ^^...

129
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
19.09.2019, 16:47  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от V_Monomax Посмотреть сообщение
Хорошо, теперь пора найти поток, который запишет нам файл, ваши идеи?
Мои идеи? Поток, который должен записать?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
19.09.2019, 18:15
Цитата Сообщение от Damenikx Посмотреть сообщение
Мои идеи?
ну не мои же.
Цитата Сообщение от Damenikx Посмотреть сообщение
который должен записать?
а вы занимались анализом кода, и вообще часто смотрите подсказки, и автодополнения которые вам предлагает студия?
C#
1
2
3
4
5
6
7
8
var res = "";
            using (TextWriter tw = new StringWriter())
            {
                var serialiser = new XmlSerializer(typeof(FileStorage));
                serialiser.Serialize(tw, _созданная_вами_сущность_FileStorage);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                res = tw.ToString();
            }
Console.WriteLine(res);
Что происходит во второй строке в данном коде?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
20.09.2019, 09:15  [ТС]
В переменную tw заносим список строк.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
20.09.2019, 09:19
Цитата Сообщение от Damenikx Посмотреть сообщение
В переменную tw заносим список строк.
где мы там во второй строке что-либо вносим??? ВНИМАТЕЛЬНО, ОЧЕНЬ ВНИМАТЕЛЬНО, смотрим и анализируем, что происходит во второй строке, какой тип имеет переменная tw, какой абстрактный класс она реализует???
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
20.09.2019, 09:24  [ТС]
Тип строка, реализует TextWriter
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
20.09.2019, 10:44
Цитата Сообщение от Damenikx Посмотреть сообщение
Тип строка,
а если ВНИМАТЕЛЬНО почитать документацию?
Переходить по ссылочкам?
Почитать внимательно вот это.
Вы вообще читали предыдущие ссылки???
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
20.09.2019, 11:01  [ТС]
V_Monomax, конечно читал. Сейчас по вашим пройду, прочту ещё раз.

Добавлено через 2 минуты
Точно, блин, уже всё забыл, что читал.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
20.09.2019, 11:11
еще раз, что делается во второй строке и какой тип переменной там? (желателен начальный абстрактный класс)
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
27.09.2019, 11:00
Damenikx, в чем у вас проблема?
C#
1
 using (TextWriter tw = new StringWriter())
Давайте разберем по косточкам:
C#
1
 using
по сути оболочка которая отслеживает Dispos объекты (объекты которые требуют обязательного освобождения ресурсов).
C#
1
TextWriter tw = new StringWriter()
образование потока для записи текста, вообще можно сказать образование потока записи, в нашем случае, это строковый поток.
С этим понятно?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
27.09.2019, 19:03
проще говоря вам нужно это:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[XmlType(AnonymousType = true)]
    [XmlRoot(Namespace = "", IsNullable = false)]
    public class FileStorage
    {
        string fileFolder = "./ExamFiles/";
        string fileName = "/FileWay.xml";
        string filePath
        {
            get
            {
                return fileFolder + fileName;
            }
        }
 
        [XmlElement("FileModel")]
        public FileModel[] Files { get; set; }
 
        /// <summary>
        /// Метод сохраняет данные по нужному пути
        /// </summary>
        public void Safe()
        {
            if (!Directory.Exists(fileFolder))
            {
                Directory.CreateDirectory(fileFolder);
            }
            using (var tw = new FileStream(filePath, FileMode.Create))
            {
                var serialiser = new XmlSerializer(typeof(FileStorage));
                serialiser.Serialize(tw, this);                
            }
        }
 
        /// <summary>
        /// Загружает данные ранее сохраненные, если они существуют
        /// </summary>
        public void Load()
        {
            if (File.Exists(filePath))
            {
                using (var tw = new FileStream(filePath, FileMode.OpenOrCreate))
                {
                    var serialiser = new XmlSerializer(typeof(FileStorage));
                    var res =(FileStorage)serialiser.Deserialize(tw);
                    this.Files = res.Files;
                }
            }
        }
 
        /// <summary>
        /// Обновляет данные в файле
        /// </summary>
        public void Update()
        {
            Safe();
            Load();
        }
    }
и конечно тесты:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 public class TestFileStorage
    {
        FileStorage Model = new FileStorage();
 
        [SetUp]
        public void Setup()
        {
            var lf = new List<FileModel>();
            for(int i = 0; i < 10; i++)
            {
                lf.Add(new FileModel {  fileName=$@"E:\Киберфорум\Projects\{i}.txt" });
            }
 
            Model.Files = lf.ToArray();
        }
 
        [Test]
        [Category("Unit")]
        public void TestSafe()
        {
            Model.Safe();            
            Assert.IsTrue(File.Exists("./ExamFiles/FileWay.xml"));
        }
 
        [Test]
        [Category("Unit")]
        public void TestLoad()
        {
            Assert.IsTrue(File.Exists("./ExamFiles/FileWay.xml"));
            Model.Files = new FileModel[0];           
            Assert.AreEqual(0, Model.Files.Length);
            Model.Load();
            Assert.AreEqual(10, Model.Files.Length);
            foreach(var s in Model.Files)
            {
                Console.WriteLine(s.fileName);
            }
           
        }
 
        [Test]
        [Category("Unit")]
        public void TestUpdate()
        {
            var lf = new List<FileModel>();
            lf.AddRange(Model.Files);
            lf = lf.SkipLast(5).ToList();
            Model.Files = lf.ToArray();
            Model.Update();
            Model.Load();
            Assert.AreEqual(5, Model.Files.Length);
            foreach(var s in Model.Files)
            {
                Console.WriteLine(s.fileName);
            }
            Setup();
            Model.Update();
            Model.Load();
            Assert.AreEqual(10, Model.Files.Length);
            foreach (var s in Model.Files)
            {
                Console.WriteLine(s.fileName);
            }
        }
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.09.2019, 19:03

Поиск строк в файле
Здравствуйте. Нужно в файле, например dll, exe, .., найти определённые строки, которые содержат пути к исходным текстам, и вывести...

Замена строк в файле
using System; using System.IO; using System.Linq; namespace ReadLine2 { class Program { static void...

Замена строк в файле
Привет! Допустим в файле несколько столбцов,например: Арбуз Груша Апельсин Арбуз Груша Яблоко.

Замена строк в файле
Добрый день! Я новичок, только что зарегистрировался на форуме. Помогите пожалуйста решить такую задачу: Есть текстовый файл....

Обработка строк в текстовом файле
Всем привет, столкнулся со следующей проблемой: есть текстовый файл, который получен из некоей программы, которая наполняет его инфой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
130
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru