Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129

Чтение текста построчно из .txt

26.01.2016, 10:55. Показов 2167. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл .txt и вот его содержимое:
Code
1
2
http://site.ru/file1.rar Nazvanie1
http://site.ru/file2.rar Nazvanie2
нужно что бы программа вытягивала первую строчку(ссылку) и текст
и вставляла в checkedListBox1, следовательно, название в checkedListBox`е будет выводиться Nazvanie1 и Nazvanie2,
если выбрать Nazvanie1 то в нем должна содержаться ссылка site .ru/file1.rar, аналогично и с Nazvanie2.

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

Не по теме:

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

0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2016, 10:55
Ответы с готовыми решениями:

Чтение txt через пробел и построчно в C#
Мне необходимо считать текст таким образом, чтобы в матрицу заносились слова таким образом: в матрице t="меч",...

Чтение и замена текста в txt
Привет! Стоит такая задача, открытие файла(openfiledialog), чтение его и замена текста. На форуме уже нашел что-то подобное (...

Чтение .txt построчно в MFC
Добрый день уважаемые форумчане! Второй день уже мучаюсь - не могу понять, как считать строку из .txt и записать её в переменную. Может...

12
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
26.01.2016, 13:02
Лучший ответ Сообщение было отмечено Даценд как решение

Решение

Цитата Сообщение от therud Посмотреть сообщение
что бы программа автоматически считывала строки из .txt и выводила их в checkedListBox1
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
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
 
namespace WindowsFormsApplication327
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
 
            //generate test
            var test = 
@"http://site.ua/file1.rar Nazvanie1
http://site.ua/file2.rar Nazvanie2";
            File.WriteAllText("c:\\temp.txt", test);
 
            //load links from file
            var links = Links.Load("c:\\temp.txt");
 
            //create checklistbox
            var clb = new CheckedListBox {Parent = this};
            clb.Items.AddRange(links.ToArray());
            
            //open checked
            new Button {Parent = this, Text = "Open checked", Left = 200, Width = 150}.Click += delegate
            {
                foreach (var item in clb.CheckedItems)
                    Process.Start((item as Link).Path);
            };
        }
    }
 
    class Link
    {
        public string Path { get; set; }
        public string Name { get; set; }
 
        public override string ToString()
        {
            return Name;
        }
 
        public static Link Parse(string s)
        {
            var parts = s.Split(' ');
            return new Link {Path = parts[0], Name = parts[1]};
        }
    }
 
    class Links : List<Link>
    {
        public static Links Load(string filePath)
        {
            var res = new Links();
            foreach (var line in File.ReadAllLines(filePath))
            if(!string.IsNullOrEmpty(line))
                res.Add(Link.Parse(line));
 
            return res;
        }
    }
}
2
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
26.01.2016, 13:49  [ТС]
Storm23, тут вроде на оборот, сохраняется в txt, а нужно вытаскивать из txt и вставлять в чекбокс)

Добавлено через 8 минут
Извиняюсь, проверяю код, оказывается, он обновляет текстовый документ, при каждом запуске.. строка:
C#
1
var test
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.01.2016, 14:13
therud,
Строки 15-19 можете не использовать. Файл создайте сами один раз.
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
26.01.2016, 14:18  [ТС]
Единственное что я не могу сделать, кнопку и checkedListBox1
код их сам создает, а мне бы сделать через элементы и подстроить под себя, сижу кручу верчу, а переделать под элементы не выходит..
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.01.2016, 14:41
Если CheckedListBox уже создан с помощью конструктора и имя его сheckedListBox1, то вместо
C#
1
2
3
//create checklistbox
var clb = new CheckedListBox {Parent = this};
clb.Items.AddRange(links.ToArray());
Просто:
C#
1
сheckedListBox1.Items.AddRange(links.ToArray());
Если же кнопка создана конструктором и называется она button1, то вместо строк 28-33 создайте обработчик клика по ней и поместите в него код:
C#
1
2
3
4
5
private void button1_Click(object sender, EventArgs e)
{
   foreach (var item in сheckedListBox1.CheckedItems)
      Process.Start((item as Link).Path);
}
2
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
26.01.2016, 15:33  [ТС]
Storm23, Даценд, От души прям, огромное вам спасибо за ваш труд в помощи, без вас я бы не справился!

Добавлено через 1 минуту
Чуть не забыл, прикреплю готовый вариант на всякий случай
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
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
 
 
namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //load links from file
            var links = Links.Load(@"C:\1.txt");
            //create checklistbox
            checkedListBox1.Items.AddRange(links.ToArray());
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (var item in checkedListBox1.CheckedItems)
            Process.Start((item as Link).Path);
        }
    }
 
    class Link
    {
        public string Path { get; set; }
        public string Name { get; set; }
 
        public override string ToString()
        {
            return Name;
        }
 
        public static Link Parse(string s)
        {
            var parts = s.Split(' ');
            return new Link { Path = parts[0], Name = parts[1] };
        }
    }
 
    class Links : List<Link>
    {
        public static Links Load(string filePath)
        {
            var res = new Links();
            foreach (var line in File.ReadAllLines(filePath))
                if (!string.IsNullOrEmpty(line))
                    res.Add(Link.Parse(line));
 
            return res;
        }
    }
}
Добавлено через 41 минуту
Не думал что возникнут проблемы с кириллицей, но ошибка выходит:
C#
1
var links = Links.Load(@"C:\1.txt", Encoding.Default);
Ошибка CS1501 Ни одна из перегрузок метода "Load" не принимает 2 аргументов.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.01.2016, 16:00
Цитата Сообщение от therud Посмотреть сообщение
Ни одна из перегрузок метода "Load" не принимает 2 аргументов.
Можете, конечно, вид кодировки в метод Load передавать, создав такую перегрузку метода:
C#
1
2
3
4
5
6
7
8
public static Links Load(string filePath, Encoding encoding)
{
    var res = new Links();
    foreach (var line in File.ReadAllLines(filePath, encoding))
        if (!string.IsNullOrEmpty(line))
            res.Add(Link.Parse(line));
    return res;
}
Но если будете работать всегда с одной и той же кодировкой, то просто в своем коде подправьте строку 50:
C#
1
foreach (var line in File.ReadAllLines(filePath, Encoding.Default))
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
26.01.2016, 19:30  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
Но если будете работать всегда с одной и той же кодировкой
Работать буду с двумя кодировками, не особо понял в чем разница двух кодов, так как одного добавления "Encoding.Default" в
C#
1
foreach (var line in File.ReadAllLines(filePath, Encoding.Default))
было достаточно, что бы работало в двух кодировках

Добавлено через 1 час 24 минуты
Извините, понимаю что не по теме, осталось последнее решение и наконец все будет готово.
на данный момент ссылки берущиеся из .txt файла, открываются в браузере, а нужна загрузку через программу с помощью WebClient, не совсем получается подогнать под готовый код, который выше
C#
1
2
3
4
string link = @"http://site.ru/1.rar"; //ссылка
string downloadFileName = Path.GetFileName(link); //Имя файла
WebClient webClient = new WebClient();
webClient.DownloadFileAsync(new Uri(link), folderBrowserDialog1.SelectedPath + "" + downloadFileName);
Добавлено через 1 час 38 минут
жесть, вообще код понять не могу как он устроен
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.01.2016, 19:46
Попробуйте так:
C#
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
{
    foreach (var item in checkedListBox1.CheckedItems)
    {
        string link = (item as Link).Path; //ссылка
        string downloadFileName = Path.GetFileName(link); //Имя файла
        WebClient webClient = new WebClient();
        webClient.DownloadFileAsync(new Uri(link), folderBrowserDialog1.SelectedPath + "" + downloadFileName);
    }
}
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
26.01.2016, 20:38  [ТС]
Даценд, спасибо
0
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
28.01.2016, 10:04  [ТС]
Цитата Сообщение от therud Посмотреть сообщение
var links = Links.Load(@"C:\1.txt");
Как эту строку переделать под URL? пишет что нельзя вписывать url
дело в том, что добавил файл .txt на сервер, подключиться теперь бы к нему по url
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.01.2016, 11:22
therud,
попробуйте так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
public static Links Load(string url)
{
    WebClient webClient = new WebClient();
    string tempFile = @"tmpFile.txt";
    webClient.DownloadFile(url, tempFile);
    var res = new Links();
    foreach (var line in File.ReadAllLines(tempFile, Encoding.Default))
        if (!string.IsNullOrEmpty(line))
            res.Add(Link.Parse(line));
    File.Delete(tempFile);
    return res;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2016, 11:22
Помогаю со студенческими работами здесь

Чтение txt файла построчно!
Возможно повторюсь, но вопрос вполне конкретен! Нужно, что бы при запуске программы автоматически читался txt файл. Если в этом файле...

Чтение из .txt построчно (ifstream)
Здравствуйте, возникли некоторые проблемы с ifstream. Не могу сделать чтение из .тхт файла построчно, да и просто не получается. Вот мой...

Чтение из файла .txt построчно в разные textbox
Добрый день! У меня такая проблема: посмотрев множество сайтов я не нашел ответ на интересующий меня вопрос. Как можно осуществить...

Чтение txt файла построчно с поиском информации
Пересмотрел все варианты такого вопроса на форуме, ответа для себя не нашел, или не понял... Необходимо: 1. TXT файл при открытии в...

Чтение текста построчно
Добрый день! Хочу попросить вашей помощи. На данный момент я учусь работать с текстом в visual basic и не могу разобраться с чтением...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru