С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 21
.NET 4.x

Программа автоматического удаления пробелов из файлов указанного каталога

21.07.2014, 20:08. Показов 1426. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Очень срочно нужна программа на C#, которая будет работать автоматический. Нужен некий FileDialog, через которую пользователь задает папку с которой надо работать. В чем заключается работа программы:
1) Открывать файл в заданной папке (папку задает пользователь, каждый раз новую)
2) Удалять все пробелы это к примеру:
C#
1
2
3
string text = textBox1.Text;
text = text.Replace(" ", "");
textBox1.Text = text;
или

C#
1
2
string str = "обычный текст с пробелами";
str = str.Replace(" ", string.Empty)
3) Затем сохранять этот файл и открывать следующий (то есть нужен цикл) так пока не закончатся все файлы в заданной папке.

P.S: можно ли добавить progressbar показывающий завершение?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2014, 20:08
Ответы с готовыми решениями:

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

Программа просмотра списка файлов указанного каталога
Помогите пожалуйста! Написать программу просмотра списка файлов указанного каталога, а так же реализовать удаление, создание и...

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

13
20 / 20 / 10
Регистрация: 07.02.2014
Сообщений: 35
21.07.2014, 20:34
Если вам нужна полностью готовая программа, а не помощь в написании - лучше обратитесь в раздел фриланса.
можно ли добавить progressbar показывающий завершение
а почему нет? Использовать многопоточность, чтобы работал адекватно и редактировать файлы в отдельном потоке.
Что значит "должна работать автоматически"?
0
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 21
21.07.2014, 20:39  [ТС]
Цитата Сообщение от Sp1 Посмотреть сообщение
Если вам нужна полностью готовая программа, а не помощь в написании - лучше обратитесь в раздел фриланса.

а почему нет? Использовать многопоточность, чтобы работал адекватно и редактировать файлы в отдельном потоке.
Что значит "должна работать автоматически"?
После того как пользователь задал папку, программа работает сама без ведома человека. Запустил и готово. К примеру как скачивание файла.
0
20 / 20 / 10
Регистрация: 07.02.2014
Сообщений: 35
21.07.2014, 20:50
Лучший ответ Сообщение было отмечено RadiL как решение

Решение

То есть в фоновом режиме, сама проходится по всем файлам и т.д. Понятно.
Получить список файлов нужного расширения в папке можно так:
C#
1
Directory.GetFiles(@"C:\folder", "*.txt") // все .txt в folder
Примерный диалог выбора папки:
C#
1
2
3
4
string path = null;
using (var dialog = new FolderBrowserDialog())
    if (dialog.ShowDialog() == DialogResult.OK)
        path = dialog.SelectedPath;
Действуйте.
1
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 21
21.07.2014, 21:20  [ТС]
Цитата Сообщение от Sp1 Посмотреть сообщение
Действуйте.
Спасибо. А можно ли название выбранной папки в label1 показывать?
0
20 / 20 / 10
Регистрация: 07.02.2014
Сообщений: 35
21.07.2014, 21:28
Конечно! Путь к папке хранится в переменной path, оттуда и возьмем.
К примеру, вот так неаккуратно:
C#
1
label1.Text=Path.Split('\\').Last();
0
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 21
21.07.2014, 21:36  [ТС]
Цитата Сообщение от Sp1 Посмотреть сообщение
Использовать многопоточность
Совсем новичек я. Как это делается и с чем его кушают...
0
20 / 20 / 10
Регистрация: 07.02.2014
Сообщений: 35
21.07.2014, 21:49
С этим я сам не очень. Редко приходилось использовать. Ради интереса решил эту же программу написать, так что подскажу, как сделаю, если кто-то более опытный не сделает раньше.
А пока, (да позволят мне модеры) вот пара ссылок. Еще можно попробовать использовать контрол BackgroundWorker, почитайте о нем.
1
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
21.07.2014, 22:43
Лучший ответ Сообщение было отмечено RadiL как решение

Решение

RadiL, вот как-то так. Дальше допилите сами. На форме кнопка и прогрессбар.
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
66
67
68
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using System.Threading;
using System.Threading.Tasks;
using System.IO;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        BackgroundWorker worker;
        public Form1()
        {
            InitializeComponent();
            worker = new BackgroundWorker();
            worker.WorkerReportsProgress = true;
            worker.DoWork += delegate(object sender, DoWorkEventArgs e)
            {
                BackgroundWorker bw = sender as BackgroundWorker;
                string folderPath = (string)e.Argument;
 
                string[] infos = Directory.GetFiles(folderPath, "*.txt");
 
                this.Invoke((Action)delegate 
                { 
                    progressBar1.Maximum = infos.Length; 
                });
 
                foreach (string info in infos)
                {
                    string infoText = File.ReadAllText(info);
                    string newText = infoText.Replace(" ", "");
 
                    Thread.Sleep(1000); //Задержку убрать, только для проверки
 
                    File.WriteAllText(info, newText);
                    bw.ReportProgress(1);
                }
            };
            worker.ProgressChanged += delegate(object sender, ProgressChangedEventArgs e)
            {
                progressBar1.Value += e.ProgressPercentage; 
            };
            worker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
            {
                MessageBox.Show("Task is completed!", "Task"); 
                progressBar1.Value = 0;  
            };
 
            button1.Click += delegate
            {
                FolderBrowserDialog dialog = new FolderBrowserDialog();
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    string path = dialog.SelectedPath;
                    worker.RunWorkerAsync(path);
                } 
            };
        }
    }
}
2
20 / 20 / 10
Регистрация: 07.02.2014
Сообщений: 35
21.07.2014, 23:13
Вот реализация потоками, если интересно. Поменьше и попроще для новичка, как мне кажется, без делегатов
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
  private void button1_Click(object sender, EventArgs e)
        {
            string Path = null;
            int all = 0;
            string[] files;
            using (var dialog = new FolderBrowserDialog())
                if (dialog.ShowDialog() == DialogResult.OK)
                { 
                    Path = dialog.SelectedPath;
                    files = Directory.GetFiles(Path, "*.txt");
                    all = files.Length;
                    for (int i = 0; i < all; i++)
                    {
                        Thread t = new Thread(ClearAllTheSpaces);
                        t.Start(files[i]);
                        t.Join();
                        progressBar1.Increment(100 / all);
                    }
                    MessageBox.Show("Готово!");
                }
        }
        private static void ClearAllTheSpaces(object f)
        {
            string file = (string)f;
            string txt=File.ReadAllText(file);
            txt = txt.Replace(" ", "");
            File.WriteAllText(file, txt);
        }
На форме так же кнопка и прогрессбар
Прощу прощения, прогрессбар некорректно работает, не туда обновление запихал, можно еще в 1 поток
1
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 21
21.07.2014, 23:23  [ТС]
insite2012, почему то кодировка файлов меняются. Т.е черный квадраты появляются вместо текста.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
21.07.2014, 23:25
Sp1, при большом количестве файлов основная форма не виснет?

Добавлено через 39 секунд
Цитата Сообщение от RadiL Посмотреть сообщение
кодировка файлов меняются.
У меня не меняется. Как вариант использовать кодировку по умолчанию.
0
20 / 20 / 10
Регистрация: 07.02.2014
Сообщений: 35
22.07.2014, 09:24
Ну ладно, я сдаюсь, перечисление неасинхронно легче все-таки через BW
Второй мой опыт с потоками, я пытался

Не по теме:

почему-то вчера не отсылалось

0
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 21
22.07.2014, 09:50  [ТС]
Списибо всем, очень помогли!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2014, 09:50
Помогаю со студенческими работами здесь

Удаление текстовых файлов из указанного каталога
создать командный файл file3.bat, который: уаляет все файлы с расширением .txt из заданного пользователем каталога. Если пользователь не...

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

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

Отслеживание изменений размеров файлов в поддереве указанного каталога
Нужно сделать прогу по заданию, которое указано в теме Собстсвенно, нашёл код Помогите разобрать, именно часть с и # Интервал (в...

Вывод списка имен всех файлов из указанного каталога
Написать программу вывода списка имен всех файлов из указанного каталога и всех вложенных в порядке возрастания или убывания размера ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru