Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87

Работа с файловым потоком

23.04.2013, 12:21. Показов 7397. Ответов 98
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как подсчитать количество строк в файле?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2013, 12:21
Ответы с готовыми решениями:

Работа с потоком Task
Привет народ! есть код в котором запуская фоновые потоки foreach (FileInfo dir in file) { ...

Работа з потоком, текстом, строками
Как текст имеющейся в .тхт-файле присвоить строке? StreamReader reader = new StreamReader(file1); // создаем «потоковый читатель» и...

работа с файловым потоком!!!
Дан символьный файл f. Найти и записать в файл g самое длинное слово файла f, снабдив его комментарием.

98
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
23.04.2013, 12:48
Самира,

C#
1
2
3
4
5
6
7
            string path = @"D:\text.txt";
            using (StreamReader sr = File.OpenText(path))
            {
                string s = string.Empty;
                int count = 0;
                while ((s = sr.ReadLine()) != null) count++;
            }
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
23.04.2013, 12:52  [ТС]
в программе для курсовой мне нужно подсчитать количество строк в текстовом файле

Добавлено через 2 минуты
вот мой код,дальше не знаю что делать(((

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
class Pasients
    {
        public string num_pasient;
        public string familia;
        public string name;
        public string ot;
 
        public Pasients(string num_pasient, string familia, string name, string ot)
        {
 
 
            this.num_pasient = num_pasient; this.familia = familia; this.name = name;
            this.ot = ot;
 
        }
        public void inFo()
        {
            StreamReader fileIn = new StreamReader("pasients.txt", Encoding.GetEncoding(1251));
 
            string text = fileIn.ReadToEnd();
            char[] div = { '!' };
            string[] parts = text.Split(div);
            fileIn.Close();
 
            Pasients[] a = new Pasients[parts.Length / 4]; int v = 0;
            for (int i = 0; i < parts.Length - 1; i += 4)
            {
                a[v] = new Pasients(parts[i], parts[i + 1], parts[i + 2], parts[i + 3]);
                v++;
 
            }
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
23.04.2013, 12:56
Цитата Сообщение от Самира Посмотреть сообщение
char[] div = { '!' };
string[] parts = text.Split(div);
Если все строки заканчиваются на "!", то количество элементов в массиве string[] parts - это и есть количество строк
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
23.04.2013, 12:59  [ТС]
этот знак у меня разделяет элементы в строке..
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
23.04.2013, 13:01
Цитата Сообщение от Самира Посмотреть сообщение
этот знак у меня разделяет элементы в строке..
Тогда смотри, что я писал выше.

А зачем вам знать количество строк? Для цикла?
0
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
23.04.2013, 13:03  [ТС]
мне нужно вывести количество пациентов в windows форме..
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
23.04.2013, 13:09
Самира,
Елки моталки. Если начали говорить в подробностях, то говорите, как устроен файл.
Каждая строка - это один пациент?
Внутри строки идут данные о нем (через "!")?
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
23.04.2013, 14:15  [ТС]
так и есть,каждая строка это отдельный пациент,внутри строки идут данные о нем через !..

Добавлено через 13 минут
информацию нужно вывести в label кликнув кнопку Button

Добавлено через 41 минуту
Подскажите где ошибка ..нужно добавить нового пациента в файл через форму...

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
class Karta : Pasients
{
 
public string numcard;
 
public string nameill;
 
public string twnumber;
 
public string adrees;
 
 
 
public Karta(string numcard, string nameill, string twnumber, string adrees, string num_pasient, string familia, string name, string ot)
: base(num_pasient, familia, name, ot)
{
this.numcard = numcard; this.nameill = nameill; this.twnumber = twnumber; this.adrees = adrees;
 
}
 
 
 
 
private void button1_Click(object sender, EventArgs e)
{
StreamReader fileIn = new StreamReader("kartaa.txt", Encoding.GetEncoding(1251));
// StreamWriter fileOut = new StreamWriter("kartaa.txt",true);
 
 
string text = fileIn.ReadToEnd();
char[] div = { '!' };
string[] parts = text.Split(div);
fileIn.Close();
 
Karta[] a = new Karta[parts.Length / 8];
int v = 0;
for (int i = 0; i < parts.Length - 1; i += 8)
{
a[v] = new Karta(parts[i], parts[i + 1], parts[i + 2], parts[i + 3], parts[i + 4], parts[i + 5], parts[i + 6],parts[i+7]);//пишет ошибку,что индекс выходить за границы массива
v++;
}
for (int c = 0; c < a.Length; c++)
{
if (textBox1.Text.Trim() == "" && textBox2.Text.Trim() == "" && textBox3.Text.Trim() == "" && textBox4.Text.Trim() == "" && textBox5.Text.Trim() == "" && textBox6.Text.Trim() == "" && textBox7.Text.Trim() == "")
{
MessageBox.Show("Не все обязательные поля заполнены");
 
return;
 
}
 
a[c].numcard = textBox1.Text.Trim();
 
a[c].familia = textBox2.Text.Trim();
a[c].name = textBox3.Text.Trim();
a[c].ot = textBox4.Text.Trim();
a[c].nameill = textBox5.Text.Trim();
a[c].twnumber = textBox6.Text.Trim();
a[c].adrees = textBox7.Text.Trim();
 
StreamWriter fileOut = new StreamWriter("kartaa.txt", true);
fileOut.Write("{0} {1} {2} {3} {4} {5} {6} {7}", a[c].numcard, a[c].familia, a[c].name, a[c].ot, a[c].nameill, a[c].twnumber, a[c].adrees);
 
MessageBox.Show("Новый пациент добавлен");
 
// fileIn.Close();
fileOut.Close();
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
23.04.2013, 14:20
Цитата Сообщение от Самира Посмотреть сообщение
информацию нужно вывести в label кликнув кнопку Button
Примерно так

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
  class Pasients
    {
        public string num_pasient;
        public string familia;
        public string name;
        public string ot;
 
        string path;
        public Pasients(string path)
        {
            this.path = path;
        }
 
        public Pasients[] inFo()
        {
            string[] lines = File.ReadAllLines(path, Encoding.Default);
            Pasients[] pasients = new Pasients[lines.Length];
 
            char[] div = { '!' };
            for (int i = 0; i < lines.Length; i++)
            {
                string[] data = lines[i].Split(div);
 
 
                if (data.Length == 4)
                    pasients[i] = new Pasients(path) { num_pasient = data[0], familia = data[1], name = data[2], ot = data[3] };
                else
                    return null; // файл содержит не верную структуру данных
            }
            return pasients;
        }
    }
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Pasients pasients = new Pasients(@"D:\pasients.txt");
            Pasients[] pasient = pasients.inFo();
 
            label1.Text = pasient[1].name;
        }
    }
Т.е. вы имеете массив всех пациентов Pasients[] pasient со всеми считанными данными о них. Далее работаете с массивом как захотите.

Добавлено через 2 минуты
Цитата Сообщение от Самира Посмотреть сообщение
Подскажите где ошибка ..нужно добавить нового пациента в файл через форму...
О как. Я думал что вы сами делаете проект.
А вы просто тягаете откуда то код.

Я пасс.
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
23.04.2013, 14:23  [ТС]
спасибо))Я сама писала эти коды,просто у меня ошибки я не знаю как их исправлять(((
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
23.04.2013, 22:11
Цитата Сообщение от Самира Посмотреть сообщение
Я сама писала эти коды
Тогда извиняюсь.

Объясните, какую роль выполняет класс Karta ?
0
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
23.04.2013, 23:42  [ТС]
он наследуется от класса Pasients..
этот класс нужен,только для того чтобы наследование было..это требуется в курсовой
не могу объяснить... мне нужно добавить нового пациента в файл kartaa.txt

Добавлено через 4 минуты
препод сказала что там структура нужно вместо класса..
или структуру можно объявить перед классом??

Добавлено через 1 час 6 минут
добавила структуру
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
struct Karta
    {
 
        public string numcard, name, familia, ot, nameill, twnumber, adrees;
 
 
 
        public Karta(string numcard,string familia, string name,string ot, string nameill, string twnumber, string adrees)
        {
            this.numcard = numcard; this.nameill = nameill; this.twnumber = twnumber; this.adrees = adrees; this.familia = familia; this.name = name; this.ot = ot;
        }
    }
    class Karts :Pasients
    {
 
        public string numcard;
       
 
        public string nameill;
 
        public string twnumber;
 
        public string adrees;
 
        public Karts(string numcard, string nameill, string twnumber, string adrees, string num_pasient, string familia, string name, string ot):base(num_pasient,familia,name,ot)
        {
            this.numcard = numcard; this.nameill = nameill; this.twnumber = twnumber; this.adrees = adrees;
 
        }
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
private void button1_Click(object sender, EventArgs e)
        {
            StreamReader fileIn = new StreamReader("kartaa.txt", Encoding.GetEncoding(1251));
         
 
 
            string text = fileIn.ReadToEnd();
            char[] div = { '!' };
            string[] parts = text.Split(div);
            fileIn.Close();
            
            Karta[] a = new Karta[parts.Length / 7];
            int v = 0;
            for (int i = 0; i < parts.Length-1; i += 7)
            {
                a[v] = new Karta(parts[i], parts[i + 1], parts[i + 2], parts[i + 3], parts[i + 4], parts[i + 5], parts[i + 6]);//вот здесь в процессе отладки пишет что индекс выходит за пределы массива
                v++;
            }
            for (int c = 0; c < a.Length; c++)
            {
                if (textBox1.Text.Trim() == "" && textBox2.Text.Trim() == "" && textBox3.Text.Trim() == "" && textBox4.Text.Trim() == "" && textBox5.Text.Trim() == "" && textBox6.Text.Trim() == "" && textBox7.Text.Trim() == "")
                {
                    MessageBox.Show("Не все обязательные поля заполнены");
 
                    return;
 
                }
 
                a[c].numcard = textBox1.Text.Trim();
 
                a[c].familia = textBox2.Text.Trim();
                a[c].name = textBox3.Text.Trim();
                a[c].ot = textBox4.Text.Trim();
                a[c].nameill = textBox5.Text.Trim();
                a[c].twnumber = textBox6.Text.Trim();
                a[c].adrees = textBox7.Text.Trim();
 
               StreamWriter fileOut = new StreamWriter("kartaa.txt", true);
                fileOut.Write("{0} {1} {2} {3} {4} {5} {6} ", a[c].numcard, a[c].familia, a[c].name, a[c].ot, a[c].nameill, a[c].twnumber, a[c].adrees);
 
                MessageBox.Show("Новый пациент добавлен");
 
              
                fileOut.Close();
 
            }
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 00:38
Самира,
У вас все получилось? Смотрю новый код выложили.
0
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 00:42  [ТС]
нет та же самая ошибка(((

Добавлено через 37 секунд
C#
1
2
3
4
for (int i = 0; i < parts.Length-1; i += 7)
            {
                a[v] = new Karta(parts[i], parts[i + 1], parts[i + 2], parts[i + 3], parts[i + 4], parts[i + 5], parts[i + 6]);//вот здесь в процессе отладки пишет что индекс выходит за пределы массива
                v++;
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 00:59
Цитата Сообщение от Самира Посмотреть сообщение
нет та же самая ошибка(((
Давайте я дам вам свой вариант, а там смотрите сами
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public partial class Form1 : Form
    {
 
        public struct Pasient
        {
            public string num_pasient, familia, name, ot, nameill, twnumber, adrees;
        }
 
 
 
        class Pasients
        {
 
            string path;
            public Pasients(string path)
            {
                this.path = path;
            }
 
 
            public Pasient[] inFo()
            {
                string[] lines = File.ReadAllLines(path, Encoding.Default);
                Pasient[] pasient = new Pasient[lines.Length];
 
                char[] div = { '!' };
                for (int i = 0; i < lines.Length; i++)
                {
                    string[] data = lines[i].Split(div);
 
 
                    if (data.Length == 7)
                        pasient[i] = new Pasient { num_pasient = data[0], familia = data[1], name = data[2], ot = data[3], nameill = data[4], twnumber = data[5], adrees = data[6] };
                    else
                        return null; // файл содержит не верную структуру данных
                }
                return pasient;
            }
        }
 
 
        class Karta : Pasients
        {
            string path;
            public Karta(string path)
                : base(path)
            {
                this.path = path;
            }
 
 
            private string Str(Pasient pasient)
            {
                return pasient.num_pasient + pasient.familia + // и так далее
            }
 
 
            public void AddPasient(Pasient pasient)
            {
                using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
                {
                    StreamWriter sw = new StreamWriter(fs);
                    sw.WriteLine(Str(pasient));
                    sw.Close();
                }
            }
        }
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
 
        Karta karta = new Karta(@"D:\kartaa.txt"); 
 
        // добавить пациента
        private void button1_Click(object sender, EventArgs e)
        {      
            Pasient pasient = new Pasient { num_pasient = "2", familia = "Иванов", name = "Сергей", ot = "Николаевич", adrees ="такой то", nameill = "такой то", twnumber = "такой то"  };          
            karta.AddPasient(pasient);        
        }
 
       // список всех пациентов
        private void button2_Click(object sender, EventArgs e)
        {
            Pasient[] pasient = karta.inFo();
        }
    }
измените
C#
1
 Pasient pasient = new Pasient { num_pasient = "2", familia = "Иванов", name = "Сергей", ot = "Николаевич", adrees ="такой то", nameill = "такой то", twnumber = "такой то"  };
на данные из TextBox

Можно также добавить проверки ввода, изменения и удаление
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 01:05  [ТС]
C#
1
Pasient pasient = new Pasient { num_pasient = "2", familia = "Иванов", name = "Сергей", ot = "Николаевич", adrees ="такой то", nameill = "такой то", twnumber = "такой то"  };
это то есть каждый раз когда добавляю нового пациента здесь нужно то же написать,а сразу из textBox ов нельзя записать?

Добавлено через 1 минуту
не поняла эту строчку
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 01:07
Цитата Сообщение от Самира Посмотреть сообщение
не поняла эту строчку
C#
1
 Pasient pasient = new Pasient { num_pasient = textBox1.Text, и т.д
1
0 / 0 / 1
Регистрация: 20.04.2013
Сообщений: 87
24.04.2013, 01:11  [ТС]
ааа...спасибо большое)))сейчас попробую...

Добавлено через 2 минуты
Можно еще кое-что спросить???)
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
24.04.2013, 01:13
Самира,
Извиняюсь
в методе
C#
1
2
3
4
            private string Str(Pasient pasient)
            {
                return pasient.num_pasient + pasient.familia + // и так далее
            }
все нужно сделать через '!'. Это ведь ваши разделители

Добавлено через 39 секунд
Цитата Сообщение от Самира Посмотреть сообщение
Можно еще кое-что спросить???)
Как доделать остальное?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2013, 01:13
Помогаю со студенческими работами здесь

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

С# работа с файловым потоком
Добрый день!!!Помогите,как подсчитать и вывести количество строк в текстовом файле???

Работа с файловым потоком: Преобразование base64 > original data
Дана функция http://base64.sourceforge.net/b64.c -&gt; static int decode( FILE *infile, FILE *outfile ). Функция выполняет преобразование...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru