Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
1

Вопрос по маcсиву файлов из директории

18.11.2010, 11:33. Показов 884. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста по чему в моем коде не идет перебор файлов.
Получается, что создаются файлы с нужными именами, но содержимое у всех одинаковое.
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
 private void button5_Click(object sender, EventArgs e)
        {
            DirectoryInfo Dir1;
            if (textBox1.Text == "") return;
            else
            {
                Dir1 = new DirectoryInfo(textBox1.Text.Remove(textBox1.Text.LastIndexOf("\\")));
                FileInfo[] ArrayFileInf = Dir1.GetFiles("*.txt");
 
 
 
                for (int i = 0; i < ArrayFileInf.Length; i++)
                {
                    if (ArrayFileInf[i].ToString().IndexOf("_m.txt") > 0)
                        continue;
 
                    string string1 = ArrayFileInf[i].ToString().Remove(ArrayFileInf[i].ToString().LastIndexOf(".txt"));// .Split('.');
 
                    string NewCurrDir = string1 + "_m.txt";
                    
                    StreamWriter writer = null;
                    FileStream Fstream = null;
                    //NewCurrDir = string1;
                    try
                    {
                        Fstream = new FileStream(NewCurrDir, FileMode.Create);
                        writer = new StreamWriter(Fstream);
 
                        button1_Click(sender, e);
                        for (int j = 0; j < textBox2.Lines.Length; j++)
                        {
                            string Card = textBox2.Lines[j].ToString().Trim();
 
                            if (Card == "T21")
                                writer.WriteLine("T49");
                            else if (Card.IndexOf("M07") >= 0)
                                writer.WriteLine("M09");
                            else if (Card.IndexOf("M08") >= 0)
                                writer.WriteLine("M10");
                            else if (!(Card == "G40 D21" || Card == "G41 D21" || Card == "G42 D21" || Card == "" || Card == "\n"))
                                writer.WriteLine(Card);
                        }
                        textBox2.Text = "Operation complete successfuly";
 
                    }
                    catch (IOException)
                    {
                        textBox2.Text = "Where isn't such file! Please try again.";
                    }
 
                    catch (Exception exception)
                    {
                        textBox2.Text = exception.ToString();
                    }  
                    finally
                    {
                        writer.Close();
                        Fstream.Close();
                        
                    }
                }
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2010, 11:33
Ответы с готовыми решениями:

В определенной директории, прочитать все имена файлов и создать папки, с названиями этих файлов
В общем Моя задача, в определенной директории, прочитать все имена файлов и создать папки, с...

Вывод всех файлов и поддиректорий в заданной директории (добавить в код ввод директории)
.586p .model flat, stdcall std_output_handle equ -11 std_input_handle equ -10 extern...

FTP: получение списка файлов из потока. Как вывести список файлов из директории?
доброго времени суток. пытаюсь написать свой FTP-клиент. отправил серверу команду LIST, и в...

Легкий вопрос про открытие файла в нужной директории
Когда я открываю текстовый файл например и не прописываю путь к нему, от он ищет файл этот в...

9
584 / 371 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
18.11.2010, 13:26 2
Цитата Сообщение от Vovkam Посмотреть сообщение
Подскажите пожалуйста по чему в моем коде не идет перебор файлов.
Получается, что создаются файлы с нужными именами, но содержимое у всех одинаковое.
1. Что бросается в глаза - чудовищная избыточность кода... Очень много лишнего.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (textBox1.Text != "") 
{
    foreach (var file in from name in Directory.GetFiles(textBox1.Text) where !name.EndsWith("_m.txt") select new FileInfo(name))
    {
        try
        {
            using(StreamWriter writer = new StreamWriter(file.Name.Replace(".txt","_m.txt")))
            {
                // Ваш код который в try
            }
        }
        catch (IOException)
        {
            textBox2.Text = "Where isn't such file! Please try again.";
        }
    }
}
2. В чем смысл " button1_Click(sender, e);" ?
3. У файлов получается одинаковое содержимое потому .... что Вы записываете в них ... одинаковое содержимое
4. А какая вообще стоит задача?
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
18.11.2010, 14:20  [ТС] 3
Задача такая:
Есть файлы тхт одинакового содержания.
Например:
G03 X2012.42 Y-115.00 I0.00 J-67.50
G01 X2012.42 Y-124.50
G03 X2022.42 Y-134.50 I10.00 J0.00
G01 X2163.70 Y-134.50
M08
G40 D21
G00 X3053.76 Y-35.93
G41 D21
N40 M07
G01 X3061.47 Y-28.22
G03 X3061.47 Y-28.22 I-7.78 J-7.78
M08
G40 D21
G00 X3795.06 Y-1342.50
G41 D21
N41 M07
G01 X3783.06 Y-1342.50
G01 X1907.53 Y-1342.50
G01 X1907.53 Y-10.00
G01 X3783.06 Y-10.00
G01 X3783.06 Y-1342.50
M08
G40 D21
G00 X4052.80 Y-1271.00
G41 D21
N42 M07
G01 X4052.80 Y-1246.00
G01 X3919.95 Y-1
Необходимо cоздать новые файлы с окончанием _м.txt, в которых строки G40 D21, G41 D21 удалить , а M07 заменить на М09 и тому подобное.
0
584 / 371 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
18.11.2010, 14:54 4
Цитата Сообщение от Vovkam Посмотреть сообщение
Необходимо cоздать новые файлы с окончанием _м.txt, в которых строки G40 D21, G41 D21 удалить , а M07 заменить на М09 и тому подобное.
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
string path = textBox1.Text;
if (path != "")
{
    foreach (var file in from name in Directory.GetFiles(path) where !name.EndsWith("_m.txt") select new FileInfo(name))
    {
        try
        {
            using (var reader = new StreamReader(file.OpenRead()))
            using (var writer = new StreamWriter(file.Name.Replace(".txt", "_m.txt")))
            {
                using (var reader = new StreamReader(file.OpenRead()))
            using (var writer = new StreamWriter(file.Name.Replace(".txt", "_m.txt")))
                while (!reader.EndOfStream)
                {
                    string s = reader.ReadLine();
                    if (s.Contains("T21")) writer.WriteLine("T49");
                    else if (s.Contains("M07")) writer.WriteLine("M09");
                    else if (s.Contains("M08")) writer.WriteLine("M10");
                    else if (!(Contains("D21") && (s.Contains("G40") || s.Contains("G41") || s.Contains("G43")))) writer.WriteLine(s);
                    writer.Close();
                }
            }
        }
        catch (IOException)
        {
            //.....
        }
    }
}
Есть файлы тхт одинакового содержания.
Вот Вы сами и написали причину:
Получается, что создаются файлы с нужными именами, но содержимое у всех одинаковое.
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
19.11.2010, 08:40  [ТС] 5
Я не правильно выразился. Файлы разные , но имеют одинаковую структуру.
0
584 / 371 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
19.11.2010, 08:52 6
Цитата Сообщение от Vovkam Посмотреть сообщение
Я не правильно выразился. Файлы разные , но имеют одинаковую структуру.
Тогда наверное нужно было употреблять фразу "аналогичного содержания".

Все получилось? Или по прежнему не работает?
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
19.11.2010, 09:13  [ТС] 7
sigmov,
Ошибка: Не верно заданно имя папки. В чем может быть проблема?
0
Заблокирован
19.11.2010, 10:22 8
возможно потому, что имя должно быть записано так @"Path"
вообще-то можно имя вывести в мессажебокс и посмотреть, в чем ошибка
0
584 / 371 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
19.11.2010, 11:29 9
Цитата Сообщение от Vovkam Посмотреть сообщение
sigmov,
Ошибка: Не верно заданно имя папки. В чем может быть проблема?
Папки по данному пути просто не существует.
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
30.11.2010, 11:07  [ТС] 10
Решил заново написать код. Нужна Ваша помощь.
исходные данные:
-есть папка в ней файлы(тхт , пдф , и тп)
-необходимо создать новые тхт, с изменненным содержанием
--файлы тхт имеют одинаковую структуру :
M08
G40 D21
G00 X3053.76 Y-35.93
G41 D21
N40 M07
G01 X3061.47 Y-28.22
G03 X3061.47 Y-28.22 I-7.78 J-7.78
M08
G40 D21
G00 X3795.06 Y-1342.50
G41 D21
N41 M07
--необходимо некоторые строчки удалить ( такие как G40 D21; G41 D21; G42 D21), некоторые заменить ( M08 заменить на М10, M07 на M09)
- добовлялось окончание (например: _м) к созданным копиям.
0
30.11.2010, 11:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2010, 11:07
Помогаю со студенческими работами здесь

Вопрос к знатокам Excel. Как вызвать из VBA диалог выбора директории?
Мне нужно вызвать диалог выбора ДИРЕКТОРИИ (не файла!) для того, чтобы в эту директорию писать...

Количество файлов в директории
Здравствуйте.Есть задание,подсчитать количество файлов в директории.Причем метод должен быть...

Поиск файлов в директории
Интересно, как можно реализовать вывод всех файлов, которые есть в данной директории? Например,...

Поиск файлов в директории
Привет всем, есть такой трабл. С помощью метода scandir я добавляю в массив все файлы, которые...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru