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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2012, 06:36   #1
barhat
Пользователь
 
Аватар для barhat
 
Регистрация: 02.02.2012
Сообщений: 19
Стрелка C#: Перенос строк с одного файла в другой

Всем привет.
Подскажите начинающему, как в C# реализовать чтение строк из файла и копирование в другой фаил построчно, с проверкой на условие - отсутствие в строке данных ".ini"?
Вот что я смог наваять с использованием MSDN:
Ссылки на материал: http://msdn.microsoft.com/ru-ru/library/94223t4d.aspx http://msdn.microsoft.com/ru-ru/library/8bh11f1k.aspx

Исходный фаил (вид): (подчеркнутые строки пропустить)

2938
1.1
Физика. Механика
Физика. Механика
1.1.1
Кинематика
Кинематика
1.1.1.1
Механическое движение. Материальная точка.
phys1\fiz101.ini
1.1.1.2
Положение тел в пространстве, система отсчёта.
phys1\fiz102.ini
1.1.1.3
Прямолинейное равномерное движение.
phys1\fiz103.ini

Необходимый фаил (вид):

2938
1.1
Физика. Механика
Физика. Механика
1.1.1
Кинематика
Кинематика
1.1.1.1
Механическое движение. Материальная точка.
1.1.1.2
Положение тел в пространстве, система отсчёта.
1.1.1.3
Прямолинейное равномерное движение.

Сам код:

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TextExecute
{
    class Program
    {
        static void Main(string[] args)
        {
            string line;

            System.IO.StreamReader file = new System.IO.StreamReader(@"D:\Base\TeachPlanNew.txt");
            while ((line = file.ReadLine()) != null)
            {

                if (line.Contains(".ini") == false)
                {
                    Console.WriteLine(line);
                    file.WriteAllLines(@"D:\Base\StudyPlan.txt", line);
                }
            }

            file.Close();
            System.Console.ReadLine();
        }
        
    }
}
Компилятор выводит на консоль отсечённые строки, но как прописать чтобы эти строки после вывода на экран сразу записывались во второй фаил? Ткните пожалуйста носом в это самое кхе-кхе . Спасибо.

Последний раз редактировалось barhat; 02.02.2012 в 07:03.
barhat вне форума Ответить с цитированием
Старый 02.02.2012, 07:29   #2
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Считайте все строки в массив строк, удалите старый файл, создайте заново и запишите туда нужные строки.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 02.02.2012, 07:53   #3
barhat
Пользователь
 
Аватар для barhat
 
Регистрация: 02.02.2012
Сообщений: 19
По умолчанию

Спасибо, но я ещё не силён в алгоритмике и возможностях языка С#, поэтому мне трудно понять ответ.

Фаил очень большой, 8400 строк и консоль просто сдвигает выведенные данные, поэтому нужно чтобы каждую отдельную строчку он дополнял из старого в новый фаил.
Если возможно, приведи пожалуйста вариант кода работоспособного, или конкретные методы...
barhat вне форума Ответить с цитированием
Старый 02.02.2012, 08:01   #4
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

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

class TextDemo
{
    static void Main()
    {
        StreamReader fileIn = new StreamReader(@"C:\text.txt");
        string line = null;
        StreamWriter fileOut = new StreamWriter(@"C:\out.txt");
        while ((line = fileIn.ReadLine()) != null)
        {
            if (line.Contains(".ini") == false)
            {
                Console.WriteLine(line);
                fileOut.WriteLine(line);
            }
        }
        Console.ReadKey();
        fileIn.Close();
        fileOut.Close();
        File.Delete(@"C:\text.txt");
        File.Move(@"C:\out.txt", @"C:\text.txt");
    }
}
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.

Последний раз редактировалось MooNDeaR; 02.02.2012 в 08:06.
MooNDeaR вне форума Ответить с цитированием
Старый 02.02.2012, 08:22   #5
barhat
Пользователь
 
Аватар для barhat
 
Регистрация: 02.02.2012
Сообщений: 19
По умолчанию

Супер, всё работает, но! Кодировка исходного файла в Юникоде, поэтому выходной фаил не читаемый
Получается VisualStudio перекодирует в другую кодировку?
barhat вне форума Ответить с цитированием
Старый 02.02.2012, 08:26   #6
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
Супер, всё работает, но! Кодировка исходного файла в Юникоде, поэтому выходной фаил не читаемый
Наоборот. Обычно входная кодировка стоит ANSI (если юзаете NotePad2), а выходная UniCode, вот и получается лажа. Где-то в настройках студии вроде можно поменять. Или методы есть конвентирующие, но я не помню их. Поэтому создавайте входной файл кодировки UTF-8.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.

Последний раз редактировалось MooNDeaR; 02.02.2012 в 08:29.
MooNDeaR вне форума Ответить с цитированием
Старый 02.02.2012, 08:27   #7
barhat
Пользователь
 
Аватар для barhat
 
Регистрация: 02.02.2012
Сообщений: 19
По умолчанию Открыл в Word

Цитата:
Сообщение от barhat Посмотреть сообщение
Супер, всё работает, но! Кодировка исходного файла в Юникоде, поэтому выходной фаил не читаемый
Получается VisualStudio перекодирует в другую кодировку?
В кодировке UTF(8). Спасибо за помощь, а есть метод который перепишет с тойже кодировкой?
barhat вне форума Ответить с цитированием
Старый 02.02.2012, 08:36   #8
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
Сообщение от barhat Посмотреть сообщение
В кодировке UTF(8). Спасибо за помощь, а есть метод который перепишет с тойже кодировкой?
Понятия не имею Надо искать Я сам программирую на C# не так долго, как могло бы показаться.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 02.02.2012, 08:40   #9
barhat
Пользователь
 
Аватар для barhat
 
Регистрация: 02.02.2012
Сообщений: 19
По умолчанию

Всё же спасибо, я постучал в скайп и аську)).

Вот кстати ссылка на пространство имен IO msdn: http://msdn.microsoft.com/ru-ru/libr...m.io.file.aspx Там как раз по кодировкам всё описано.

Последний раз редактировалось barhat; 02.02.2012 в 08:43.
barhat вне форума Ответить с цитированием
Старый 02.02.2012, 08:43   #10
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
Сообщение от barhat Посмотреть сообщение
Всё же спасибо, я постучал в скайп и аську)).
Редко там бываю. Вообще ройте в сторону класса System.Text.Encoding
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический перенос строк из одного листа в другой dom_sveta Microsoft Office Excel 13 09.04.2020 20:04
перенос строк с одного листа на другой по условию Irek11 Microsoft Office Excel 12 13.11.2011 20:45
перенос строк с одного листа на другой при заданном условии dedelev Microsoft Office Excel 2 11.01.2011 12:47
Автоматический перенос строк из одного листа в другой лист Результат maksvas Microsoft Office Excel 4 22.10.2010 14:03
При условии перенос строк из одного листа в другой Ilya_L Microsoft Office Excel 5 19.06.2010 06:15