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

Дополнить .txt файл из другого .txt файла недостающими данными

13.02.2014, 18:54. Показов 5998. Ответов 34
Метки нет (Все метки)

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

Подскажите как осуществить такую операцию с текстовым файлом.

К примеру, первый файл обновляется с сайта и имеет 100 записей, и каждый день дополняется новыми при обновлении

выглядит так

200 дата 1 2 3 4 5
199 дата 2 4 5 6 7
........................
100 дата 5 4 7 8 9

второй файл идентичен, но имеет все записи
кроме 1 последней или 5 последних или 10 последних (просто не обновлял его вручную из первого)


как дополнить недостающими данными (дописать) второй файл, взяв данные из первого?

Понимаю что нужно прочитать последний номер в файле №2 (верхний)
Затем прочитать последний номер в файле №1 (верхний)

к примеру получится так

100

и

110


Затем вычислить недостающие записи 110-100=10

И только эти 10 последних записей записать во второй файл...


Или как то по другому это делается ?

Подскажите



Приходится постоянно дополнять полный файл вручную в блокноте (копировать, вставить) предварительно скопировав недостающие записи из первого
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2014, 18:54
Ответы с готовыми решениями:

Записать в файл out.txt те числа из файла inp.txt, которые НЕ кратны k
Заполнить файл inp.txt N натуральными числами. Записать в файл out.txt те числа из файла inp.txt (числа считываются непосредственно из...

Заменить кусок текста в .txt текстом из другого .txt
Мужики, привет! Такая проблема, имею .txt файл на ~200к строк. Вся структура имеет вот такой вот вид: "471" { ...

Чтение txt файла и заполнение массива данными из него
Доброго времени суток! Захотел написать метод, который будет считывать данные из файла и закидывать их в массив. В текстовом фале две...

34
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
13.02.2014, 21:56
Студворк — интернет-сервис помощи студентам
Главное с диска D программу не перемещайте, там сейчас привязка к пути стоит
1
Заблокирован
14.02.2014, 08:58
И все же, не могли бы вы объяснить мне, почему такой шаблон не подойдет и откуда возьмутся дубли:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  private void button2_Click(object sender, EventArgs e)
        {
            string str = "C:\\1.txt";
            string str1 = "C:\\2.txt";
            try
            {
                StreamReader Wrr = new StreamReader(str);
                string z = Wrr.ReadToEnd();
                Wrr.Close();
                StreamWriter Rww = new StreamWriter(str1, true);
                Rww.WriteLine(z);
                Rww.Close();
                
            }
            catch(Exception et)
            {
                MessageBox.Show(et.ToString());
            }
        }
0
1 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 27
14.02.2014, 09:12  [ТС]
Так сразу и трудно объяснить. Просто посмотрите файлы

прикрепляю два файла,---образцы---

один файл обновляемый (меньше)
второй файл архивный (больше), вот в него нужно и дописать из первого (который меньше)
Вложения
Тип файла: zip 5-36.zip (2.7 Кб, 4 просмотров)
Тип файла: zip весь архив 5-36.zip (15.4 Кб, 6 просмотров)
0
1 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 27
14.02.2014, 09:19  [ТС]
обновляемый файл содержит много строк, которые дублируются во втором...
дописывать можно и тот файл (который обновился)... архивным...но дополнять нужно начинать с последней строки...убрав дубли из архивного..
0
Заблокирован
14.02.2014, 10:32
вашу логику я все равно не понимаю.
Почему данные записываются одновременно в два файла?

Т.е вам нужно записывать вначало файла, а не в конец?
0
1 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 27
14.02.2014, 11:19  [ТС]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
вашу логику я все равно не понимаю.
Почему данные записываются одновременно в два файла?

Т.е вам нужно записывать вначало файла, а не в конец?
они одновременно не записываются в 2 файла

второй я веду вручную, ...и поэтому хочу автоматизировать этот процесс.

а данные недостающие беру с первого (копировать, вставить)...вот этот файл и грабится с сайта (но только за 6 месяцев)

а второй файл полный (за несколько лет)

вот во второй файл нужно записывать автоматически недостающие строки (я это делаю вручную)
в этом случае добавляя строки в начало, затем сохраняя изменения...
0
Заблокирован
14.02.2014, 23:13
Цитата Сообщение от си-шарп Посмотреть сообщение
они одновременно не записываются в 2 файла
Если запись идет только в один файл, но откуда повторения в двух файлах?
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.02.2014, 01:56
Раз повторения могут быть, все равно, как бы то ни было, придется считывать оба файла.
C#
1
IO.File.ReadAllLines
В первый и во второй массив.
Завести третий, в котором будут только уникальные элементы из обоих файлов
третий массив заполняем примерно так
C#
1
Массив3 = Массив1.Except(Массив2).ToArray
И этот массив дописываем к большому файлу любым удобным способом.
Я бы выбрал "дозапись" без считывания.

Код написать не могу, с щарпом нелады, только на VB .NET, но тут он ни к месту
0
1 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 27
15.02.2014, 07:48  [ТС]
vb.net я уж смогу перевести на шарп.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void button2_Click(object sender, EventArgs e)
        {
            string str = "C:\\1.txt";
            string str1 = "C:\\2.txt";
            try
            {
                StreamReader Wrr = new StreamReader(str);
                string z = Wrr.ReadToEnd();
                Wrr.Close();
                StreamWriter Rww = new StreamWriter(str1, true);
//......................................................................................................................
               поставить фильтр
 
                 Rww.WriteLine(z);
//......................................................................................................................
                Rww.Close();
                
            }
            catch(Exception et)
            {
                MessageBox.Show(et.ToString());
            }
        }

к примеру, считываю первые 4 символа в строке...

строка такая

1000 дата 1 2 3 4 5

получим 1000 конвертирую в int

со второго файла аналогично, получим 999

если 1000-999=1 то пишем строку

подскажите как мне выдергнуть первые 4 символа в строке (добавить к коду этому)

остальное я сам напишу

мне не нужно всю строку проверять, мне нужно номера строк проверить, номера строк уникальны...и на основе этого я уберу дубли при сложении двух файлов
0
1 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 27
15.02.2014, 08:06  [ТС]
массив строк уникален только нумерацией в начале строки.

мне нужно убирать дубликаты строк только по этому признаку

например

не пишем

100 дата 1 2 3 4 5
100 дата 1 2 3 4 5


пишем, хоть и элементы одинаковы, главное что нумерация отличается

100 1 2 3 4 5
099 1 2 3 4 5
Миниатюры
Дополнить .txt файл из другого .txt файла недостающими данными  
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.02.2014, 11:11
Цитата Сообщение от си-шарп Посмотреть сообщение
выдергнуть первые 4 символа в строке
Тогда это нужен Substring: http://msdn.microsoft.com/ru-r... 10%29.aspx

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

Добавлено через 20 минут
Цитата Сообщение от си-шарп Посмотреть сообщение
vb.net я уж смогу перевести на шарп
Тогда
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        Dim BigFile() As String = IO.File.ReadAllLines("C:\весь архив 5-36.txt")
        Dim LittleFile() As String = IO.File.ReadAllLines("C:\5-36.txt")
        Dim TmpFile As New List(Of String)
        Dim Tmp As Boolean
        For Each LF As String In LittleFile
            Tmp = False
            For Each BF As String In BigFile
                If LF.Substring(0, 4) = BF.Substring(0, 4) Then
                    Tmp = True
                End If
            Next
            If Tmp = False Then TmpFile.Add(LF)
        Next
        BigFile = TmpFile.Concat(BigFile).ToArray
        IO.File.WriteAllLines("C:\весь архив 5-36.txt", BigFile)
        MsgBox("Добавлено строк в начало файла: " & TmpFile.Count)
1
1 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 27
15.02.2014, 12:20  [ТС]
Памирыч, спасибо.

Добавлено через 1 час 2 минуты
Памирыч, я затормозился на этой строчке
(остальное понятно)

C#
1
Dim TmpFile As New List(Of String)
не могли бы анлог на шарпе написать List(Of String)
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.02.2014, 12:23
Попробуйте
C#
1
List<string> TmpFile = new List<string>();
0
1 / 1 / 0
Регистрация: 30.10.2013
Сообщений: 27
15.02.2014, 12:38  [ТС]
понял

Добавлено через 13 минут
перевод на C#

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void button1_Click(object sender, EventArgs e)
        {
            Boolean Tmp;
            string[] BigFile = System.IO.File.ReadAllLines("весь архив 5-36.txt");
            string[] LittleFile = System.IO.File.ReadAllLines("5-36.txt");
            List<string> TmpFile = new List<string>();
            foreach (string LF in LittleFile)
            {
                Tmp = false;
                foreach (string BF in BigFile)
                {
                    if ((LF.Substring(0, 4) == BF.Substring(0, 4)))
                        Tmp = true;
                }
                if (Tmp == false) TmpFile.Add(LF);
            }
            BigFile = TmpFile.Concat(BigFile).ToArray();
            File.WriteAllLines("весь архив 5-36.txt", BigFile);
            MessageBox.Show("добавлено строк : " + TmpFile.Count);
        }
Памирыч, вроде работает! Спасибо ещё раз!
1
15.02.2014, 12:57

Не по теме:

си-шарп, :good:

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2014, 12:57

Ввод данных с txt файла, сортировка и запись результата в txt файлы
Доброго времени суток, такое задание, не могу сделать ввод данных из .тхт файла, чтобы потом отсортировать данные из этого же файла и...

Копировать файл и сохранить содержимое файла в .txt
Добрый день форумчане. у меня возникла проблема. Мне надо написать программу которая: 1. копирует из определенной папки в указанную папку...

Можно ли текст из doc файла перезаписать в txt файл
Подскажите можно ли текст из doc файла перезаписать в txt файл?

Закодировать все строки текстового файла в Base64 и записать в новый txt файл
Ребята, помогите. Есть txt файл, в нём несколько строк. Нужно их всех кодировать в Base64 и записать в новый txt файл. Также...

Как вывести на экран консоли содержимое из файла txt и при необходимости добавить информацию в файл?
C# Как вывести на экран консоли содержимое из файла txt и при необходимости добавить информацию в файл?


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru