Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8743
∙ повысить рейтинг »
CradleA
Статус: Бакалавр
Рейтинг: 2445
∙ повысить рейтинг »
Micren
Статус: Профессор
Рейтинг: 1887
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Microsoft .NET : C#

Номер выпуска:221
Дата выхода:18.12.2011, 11:00
Администратор рассылки:Alexey G. Gladenyuk (Управляющий)
Подписчиков / экспертов:145 / 60
Вопросов / ответов:1 / 2

Консультация # 184768: Уважаемые эксперты! Пожалуйста, помогите решить задачу: Написать программу на C#, в которой поток переписывает данные из одного файла в другой. Данные считывать по пять символов в цикле пока не кончится файл, при том на каждой итерации пять символов считывать посимвольно. Не пойму, как организовать цикл......


Консультация # 184768:

Уважаемые эксперты! Пожалуйста, помогите решить задачу:
Написать программу на C#, в которой поток переписывает данные из одного файла в другой. Данные считывать по пять символов в цикле пока не кончится файл, при том на каждой итерации пять символов считывать посимвольно.
Не пойму, как организовать цикл...

Дата отправки: 13.12.2011, 10:21
Вопрос задал: Alex12 (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует PsySex (Профессионал):

Здравствуйте, Alex12!
Ну если я правильно понял Ваше задание, то код будет таким.

Код :
using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string in_file = "c:\\test.txt";
            string out_file = "c:\\test1.txt";
            int retval;

            StreamReader sr = new StreamReader(in_file);//открываем файл для чтения
            StreamWriter sw = new StreamWriter(out_file);//открываем файл для записи
            while (sr.EndOfStream != true)//оснвной цикл
            {
                for (int i = 0; i < 5; i++)//цикл который читает и пишет посимвольно, по 5 символов
                {
                    retval = sr.Read();//читаем символ
                    if (retval < 0)//если файл закончился, то результат равен -1, по этому выходим из цикла
                        break;
                    sw.Write((char)retval);//записываем полученный символ в другой файл
                }

            }
            //закрываем ридеры
            sw.Close();
            sr.Close();
        }
    }
}

Консультировал: PsySex (Профессионал)
Дата отправки: 13.12.2011, 15:49

5
нет комментария
-----
Дата оценки: 13.12.2011, 17:43

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует CradleA (Бакалавр):

Здравствуйте, Alex12!


мой вариант с обработкой исключений.

Код :
using System;
using System.IO;

namespace Thread
{
    class Program
    {
        static void Main(string[] args)
        {

            int index = 0;
            bool b = true;
            char[] ch = new char[5];
            StreamReader sr;
            StreamWriter sw;
            try
            {
                sr = new StreamReader("in.txt");
                sw = new StreamWriter("out.txt");
            }
            catch
            {
                Console.WriteLine("Fail!");
                return;
            }

            while (b)
            {

              //в переменную tmp будет сохранятся количество прочитанных байтов
               int tmp=sr.ReadBlock(ch, 0, 5);
               if (tmp == 5)
                   //Если считали 5 байтов,то
                    sw.Write(ch);
                else
                {
                   //Если считали меньше 5 байтов (т.е. приблизились к концу файла), то записываем в 
                   //выходной файл оставшиеся байты
                    for (int i = 0; i < tmp;i++ )
                        sw.Write(ch[i]);
                   //данная переманная b управляет внешним циклом while
                   //устанавливая ее в false мы выходим из цикла while
                    b = false;
                }



/*
                try
                {
                    sr.ReadBlock(ch, 0, 5);
                    sw.Write(ch);
                    index += 5;
                }
                catch
                {
                    sw.WriteLine(sr.ReadToEnd());
                    b = false;
                }
*/
            }
            sr.Close();
            sw.Close();
        }
    }
}


Консультировал: CradleA (Бакалавр)
Дата отправки: 14.12.2011, 19:19

5
нет комментария
-----
Дата оценки: 14.12.2011, 19:56

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное