Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139

Потоки, считывание строк из файла.

04.05.2009, 18:27. Показов 3591. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Вот озадачился такой задачей, никак не могу подобрать нужной выражение в C# для считывания строк из файла. Проблема такая: При открытии формы, создается файл:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool exFlJobs = File.Exists("Jobs.dat");
            /////
            if (exFlJobs==true)
            {
                Stream rdFlJobs = File.OpenRead("Jobs.dat");
                
                long n_j = rdFlJobs.Length; //так ли ищется кол строк в файле?
                for (int i = 0; i < n_j; i++)
                {
                    //ВР=new Вид_работ();//ВР - Класс со свойствами
                    //Главная_форма.Список_раб.Add(ВР); 
                    //ВР = (Вид_работ)Главная_форма.Список_раб[i]; //запись в коллекцию
                    //rdFlJobs[i] = ВР._name_job; //здесь мне нужно передать одну из многих строк из файла в свойство класса. как это сделать?
 
                }
                rdFlJobs.Close();
            }
            else
            {
                Stream crFlJobs = File.Create("Jobs.dat");
                crFlJobs.Close();
            }
Он создается, тогда, когда его нет. Если он есть, то он считывакет, что в этом файле. В данном случае нужно чтобы считывал текстовые строки и записывался в коллекцию.

Буду очень благодарен вашей помощи.

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

Потоки. Считывание данных из текстового файла "in.txt"
Добрый день. Подскажите, плз. Программа ведет себя вопреки ожиданиям. вот код (тестю файловый ввод-вывод): #include &lt;iostream&gt;...

Считывание строк с файла
с помощью QTextStream и функции readline() пытаюсь считывать строки, но оно считывает лиш до пробела.Есть ли какой нибуть вариант типа...

Считывание строк из файла
Здравствуйте уважаемые форумчане! Возник вопрос по Action Script. Необходимо из txt файла(либо любого другого) построчно считать данные в...

10
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
04.05.2009, 19:16
C#
1
var l = new List<string>(File.ReadAllLines("TextFile1.txt"));
1
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
04.05.2009, 22:42  [ТС]
Что-то не получилось как вы написали, но получилось так :
C#
1
2
string[] lstJ = new string[30];
lstJ =File.ReadAllLines("base/Jobs.dat");
Добавлено через 11 минут 20 секунд
Я хотел бы еще узнать, каким образом можно узнать сколько вообще строк в этом файле?

Спасибо.

Добавлено через 36 минут 36 секунд
Поколи еще не ушел от вопроса про длинну спрошу еще кое-что.

Вот я смог считывать из файла и обратно записывать, что накоплю за время работы программы. Только если я в файле пропишу любую русскую букву, то в программе она отображается, как плоский ноль или ероглиф ). а если я в программе что-нить напишу по-русски и потом сохраню, то в файле ероглиф, но при новой роботе с файлом, программа отображает все нормально. Вот такая вот еще проблема.

Что нужно сделать, чтобы и так и так все было нормально?

Спасибо.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
04.05.2009, 23:29
KIMka,
возможно не получается из-за ключевого слова var, я не помню точно, с какой версии .NET оно появилось в c#. Если выбирать платформу .NET 3.5 (в Visual Studio 2008), то ошибок не будет.
или можно вместо вар подставить тип:
List<string> l = ...

Я хотел бы еще узнать, каким образом можно узнать сколько вообще строк в этом файле?
Если файл маленький и накладные расходы не страшны, то:
C#
1
int lines = File.ReadAllLines("...").Length;
Если файл большой, то лучше по старинке, в цикле. заодно еще можно что-нибудь полезное сделать ((:

Что нужно сделать, чтобы и так и так все было нормально?
При открытии файла надо присобачить к нему нужную кодировку.
Лучше всего юникод, тогда проблем никаких не будет, но на крайняк для кириллицы можно и Windows CP-1251
C#
1
2
3
4
using (var s = new StreamWriter("zzz.txt", false, Encoding.GetEncoding(1251)))
{
    ...
}
1
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
05.05.2009, 12:20  [ТС]
Большое вам спасибо, все работает.

Можно еще один вопрос. Каким образом обычно сохраняют табличные данные. Например, у меня есть фамилия, имя и отчество. Как мне это сохранить, чтобы потом нормально снова прочитать? Как это обычно делают... через табулятор или пробелы...

Спасибо.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
05.05.2009, 12:29
KIMka,
Например, через сериализацию в xml или бинарный файл.
для небольших данных лучше в xml, там удобно видеть структуру
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Person
{
    public string Name;
    public string LastName;
}
 
List<Person> p = new ...;
try
{        
    using (var fs = new StreamWriter("persons.xml"))
    {
        var serializer = new XmlSerializer(p.GetType());
        serializer.Serialize(fs, p);
    }
}
catch (Exception e)
{
    // error 
    Console.WriteLine(e.Message);
}
примерно как-то так...
1
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
05.05.2009, 12:32
Да как вам нравиться:
1. Через спец символ (Таб, пробел, точка с запятой)
2. Структруой в dat файл.
3. В хмл фай
4. В БД
0
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
05.05.2009, 12:52  [ТС]
Rififi, я не могу разобраться в вашем примере что-то.
IT-Skyline, ну это понятно, что оно так и есть, только как это сделать... бд пока не нужно. хорошо было бы в xml или со структурой в dat.

У меня есть, форма где заполняются поля (ФИО). по нажатию кнопки все что введено перекидывает в коллекцию. По закрытию формы все записывается в файл из коллекции. При открытии все что в файле закидывается в коллекцию, и можно дальше в форме работать...вот. Я просто никак не пойму как так записать все в файл без гимора (+пробел+) и потом снова все считать и расскидать по своим свойствам класса колеекции.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
05.05.2009, 14:04
KIMka,
Вот рабочий пример
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
    public class PersonTest
    {
        public class Person
        {
            public string Name;
            public int Age;        
        }
 
        const string FileName = "persons.xml";
        
        public void Save()
        {
            var p = new List<Person>()
            {
                new Person() { Name = "Маша", Age=10 },
                new Person() { Name = "Петя", Age=20 }
            };
 
            try
            {
                using (var fs = new StreamWriter(FileName))
                {
                    var serilizer = new XmlSerializer(p.GetType());
                    serilizer.Serialize(fs, p);
                }
            }
            catch (Exception e)
            {
            }
        }
 
        public void Load()
        {
            try
            {
                using (var rd = new StreamReader(FileName))
                {
                    var serilizer = new XmlSerializer(typeof(List<Person>));
                    var p = (List<Person>) serilizer.Deserialize(rd);
                    // Юзаем p
                    Console.WriteLine(p[0].Name);
                }
            }
            catch (Exception e)
            {
            }
        }
    }
Использование:
var test = new PersonTest();
test.Save();
test.Load();

В результате работы будет сгененрирован следующий xml-файл:
XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Person>
    <Name>Маша</Name>
    <Age>10</Age>
  </Person>
  <Person>
    <Name>Петя</Name>
    <Age>20</Age>
  </Person>
</ArrayOfPerson>
1
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
05.05.2009, 14:20  [ТС]
Благодарю, буду пробовать.
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
05.05.2009, 14:37
Вот ещё один пример:
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
using System;
using System.Collections;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
 
// Shopping list class which will be serialized
[XmlRoot("shoppingList")]
public class ShoppingList {
  private ArrayList listShopping;
 
  public ShoppingList() {
    listShopping = new ArrayList();
  }
 
  [XmlElement("item")]
  public Item[] Items {
    get {
      Item[] items = new Item[ listShopping.Count ];
      listShopping.CopyTo( items );
      return items;
    }
    set {
      if( value == null ) return;
      Item[] items = (Item[])value;
      listShopping.Clear();
      foreach( Item item in items )
        listShopping.Add( item );
    }
  }
 
  public int AddItem( Item item ) {
    return listShopping.Add( item );
  }
}
 
// Items in the shopping list
public class Item {
  [XmlAttribute("name")] public string name;
  [XmlAttribute("price")] public double price;
 
  public Item() {
  }
 
  public Item( string Name, string Price ) {
    name = Name;
    price = Price;
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2009, 14:37
Помогаю со студенческими работами здесь

Считывание строк из файла
Помогите, пожалуйста, нужно на завтра две прграммы написать, но не получается(( 1) считать из файла строки-палиндромы (это строки,...

Считывание строк из файла
При считывании из файла читаются всего 3 строки. void rab::xinputfile() // vvod iz file { ifstream fin; // delete x;...

Считывание строк из файла
Во общем есть текстовый файл, из которого надо взять строку и просто ее напечатать #define _CRT_SECURE_NO_WARNINGS #include...

Считывание строк из файла
Здравствуйте, подскажите, пожалуйста, как организовать чтение строк из файла при помощи ifstream\ofstream таким образом, чтобы считывалось...

Считывание из файла строк с getline()
Код из интернета, который работает у автора, но не у меня. Ошибка: Call to undefined function 'getline' Прототип писать не стал, так...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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