Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2010, 20:53   #1
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
Вопрос Запись в файл

Создал класс который должен найти в файле имя человека и заменить его на новое. Так вот в чем проблема я не знаю как правильно записать новое имя в файл, заместо старого. Вот, только до чего додумался. Заранее СПАСИБО!!!
Код:
class redact
    {
        public void red()
        {
            string[] fileLines = File.ReadAllLines("tel.txt");
            string exit = "",d;
            while (exit != "ё")
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Введите имя человека для редактирования:");
                Console.ForegroundColor = ConsoleColor.Green;
                exit = Console.ReadLine();
                foreach (var line in fileLines)
                {
                    string[] values = line.Split(' ');

                    string name = values[0];
                    string number = values[1];

                    if (exit == name)
                    {
                        Console.Write(name + " " + number);
                        Console.WriteLine();
                    }  
                    d=exit;
                    Console.WriteLine("Что вы хотите изменить? имя");
                    exit = Console.ReadLine();
                    if (exit == "имя")
                    {
                        Console.WriteLine("Введите новое имя:");
                        exit = Console.ReadLine();
                        d=d.Insert(1,exit);
                        StreamWriter sw;
                        FileInfo fi = new FileInfo("tel.txt");
                        sw.Write(d);
                        
                    } break;
                }
            }
        }  
    }
sergio11 вне форума Ответить с цитированием
Старый 15.12.2010, 09:25   #2
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Код:
            string old_name="Vasya";
            string new_name="Kolay";

            StreamReader sr = new StreamReader("file.txt");
            string str = sr.ReadToEnd();
            sr.Close();

            str = str.Replace(old_name, new_name);

            StreamWriter sw = new StreamWriter("file.txt");
            sw.Write(str);
            sw.Close();
Cpluser вне форума Ответить с цитированием
Старый 17.12.2010, 22:50   #3
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

всё таки по нормальному не могу сделать.отредактируйте пожалуйста МОЙ код, а то я уж всю головуслома, но смог по человечески сделать.
Код:
    class redact
    {
        public void red()
        {
            string[] fileLines = File.ReadAllLines("tel.txt");
            string exit = "",d,wq;
            while (exit != "ё")
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Введите имя человека для редактирования:");
                Console.ForegroundColor = ConsoleColor.Green;
                exit = Console.ReadLine();
                foreach (var line in fileLines)
                {
                   /* string[] values = line.Split(' ');

                    string name = values[0];
                    string number = values[1];

                    if (exit == name)
                    {
                        Console.Write(name + " " + number);
                        Console.WriteLine();
                        Console.Read();
                    }; */ 
                    d=exit;
                   // wq = number;
                    Console.WriteLine("Что вы хотите изменить? имя/номер");
                    exit = Console.ReadLine();
                    if (exit == "имя")
                    {
                        Console.WriteLine("Введите новое имя:");
                        exit = Console.ReadLine();
                        StreamReader sr = new StreamReader("tel.txt");
                        string str = sr.ReadToEnd();
                        sr.Close();

                        str = str.Replace(d,exit);
                        StreamWriter sw = new StreamWriter("tel.txt");
                        sw.Write(str);
                        sw.Close();
                    } 
                   else
                    {
                        if (exit == "номер")
                        {
                            Console.WriteLine("Введите новый номер:");
                            exit = Console.ReadLine();
                           StreamReader sr = new StreamReader("tel.txt");
                            string str = sr.ReadToEnd();
                            sr.Close();

                            str = str.Replace(wq, exit);
                            StreamWriter sw = new StreamWriter("tel.txt");
                            sw.Write(str);
                            sw.Close();
                        }
                    } break;
                }
            }
        }  
    }
вот до чего я только смог додуматься
sergio11 вне форума Ответить с цитированием
Старый 18.12.2010, 01:09   #4
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

А как выглядит содержимое файла?
m0nax вне форума Ответить с цитированием
Старый 18.12.2010, 12:00   #5
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

ВАНЯ 956324
КОЛЯ 459321
ДИМА 598756
КОСТЯ 654896
ОЛЯ 568974
ЖЕНЯ 156894
НИКОЛАЙ 488965
ЕЛЕНА 159875
ЛЕНА 886621
ЛЕНА 846213
ДМИТРИЙ 998725
ПЕТЯ 599875
ЛЯЛИ 561489
sergio11 вне форума Ответить с цитированием
Старый 18.12.2010, 14:19   #6
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

Код:
        public void red()
        {
            string[] fileLines = File.ReadAllLines("tel.txt");
            string exit = "", d, wq;

            while (exit != "ё")
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Введите имя человека для редактирования:");
                Console.ForegroundColor = ConsoleColor.Green;
                string peopleName = Console.ReadLine();

                int lineIndex = Array.FindIndex(fileLines, f => f.Contains(peopleName));

                Console.WriteLine("Что вы хотите изменить? имя/номер");

                exit = Console.ReadLine();
                switch (exit)
                {
                    case "имя":
                        {
                            Console.WriteLine("Введите новое имя:");
                            string newName = Console.ReadLine();

                            fileLines[lineIndex] = fileLines[lineIndex].Replace(peopleName, newName);
                        }
                        break;
                    case "номер":
                        {
                            Console.WriteLine("Введите новый номер:");
                            string newNumber = Console.ReadLine();

                            fileLines[lineIndex] = string.Format("{0} {1}", peopleName, newNumber);
                        }
                        break;
                }
            }

            File.WriteAllLines("tel_result.txt",fileLines);
        }
m0nax вне форума Ответить с цитированием
Старый 18.12.2010, 20:19   #7
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

СПАСИБО за сторание, работать работает, но в самом файле ничего не происходит. А почему не понимаю.
sergio11 вне форума Ответить с цитированием
Старый 18.12.2010, 21:59   #8
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

запись идет в другой файл как бы...
Я код не проверял поэтому решил что не стоит портить исходный фал если что не так
m0nax вне форума Ответить с цитированием
Старый 19.12.2010, 10:12   #9
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

чтобы он записывал как мне надо, новые данные, в конец файла. но не могу придумать как можно удалить старые данные. т.к. он записывает новые данные с использованием старых, а мне бы хотелось выполнять замену или хотя бы что то подобное
sergio11 вне форума Ответить с цитированием
Старый 19.12.2010, 10:33   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А мне кажется все прозрачнее:
Код:
            StreamReader sr = new StreamReader("tel.txt");
            string s = sr.ReadToEnd();
            sr.Close();
            StreamWriter sw = new StreamWriter("tel.txt");
            sw.Write(s.Replace("ЛЕНА", "Elen"));
            sw.Close();
Правда тут я кодировку не учитываю, а стоит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл Akimich Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.08.2010 08:05
Запись в файл Serjuk Помощь студентам 9 26.05.2010 01:26
Запись в файл soonner Общие вопросы Delphi 5 21.03.2009 01:12
Запись в файл |{ot Общие вопросы Delphi 6 05.07.2008 02:24
Запись в файл С++ Viteks Общие вопросы C/C++ 3 18.04.2008 13:18