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

Не могу создать LOG-файл

01.09.2019, 19:24. Показов 5638. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Нужна помощь, а именно - в домашнем задании необходимо создать LOG-файл, в который будет записываться элемент iTemp из блока сортировки массива. Исполняемый файл находится ...\SortData\bin\Debug\SortData.exe

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace Вторая_фор._практ_задание_21._08._19
{
    public partial class frmSort : Form
    {
        public frmSort()
        {
            InitializeComponent();
        }
        int[] iMass = new int[100];
        private void btnLoad_Click(object sender, EventArgs e)
        {
            string sOpenFile = "";
            //создаем переменную типа string в которой будет храниться
            //путь к файлу
            OpenFileDialog.ShowDialog();
            //методом ShowDialog() вызываем диалоговое окно открытия файла
            sOpenFile = OpenFileDialog.FileName;
            //FileName возвращает строку содержащую имя файла. Если
            //пользователь выбрал файл - возвращается полный путь к файлу
            //Если пользователь нажал отмену - ничего не возвращается
            if (sOpenFile != "")
            //Проверяем, что пользователь выбрал файл, для этого строковая
            //переменная sOpenFile не должна быть пустой. Если она пустая - 
            //выводим сообщения, что файл не выбран
            {
                FileStream fsFile = new FileStream(sOpenFile, FileMode.Open);
                StreamReader fileRead = new StreamReader(fsFile);
                //создаем объекты fsFile и fileRead для чтения файла
                for (int i = 0; i < numQuantity.Value; i++)
                    iMass[i] = Convert.ToInt32(fileRead.ReadLine());
                //с помощью цикла for заполняем массив данными из файла
                //Данные из фала передаются переменными типа string
                //поэтому для записи в массив их необходимо переводить в
                //тип Int, посредством метода Convert.Toint32().
                fileRead.Close();
                //метод Close() закрывает поток чтения из файла
                lblStatus.Text = "Загрузка из файла выполнена";
                //сообщаем пользователю обуспешной загрузке файла
                btnSort.Enabled = true;
                //делаем кнопку Сортировка доступной
                btnSave.Enabled = false;
                //Делаем кнопку Сохранение недоступной. Если пользователь перед этим уже выбрал файл,
                //нажав Сортировка, а потом передумал и решил загрузить какой-либо новый файл, то, пока
                //он заново его не отсортировал, сохранение должно быть недоступно
            }
            else
                lblStatus.Text = "Файл для загрузки не выбран!";
        }
        private void btnSort_Click(object sender, EventArgs e)
        {
            if (rbtnUp.Checked == true)
            {
                for (int i = 0; i < numQuantity.Value; i++)
                    for (int j = i + 1; j < numQuantity.Value; j++)
                        if (iMass[j] < iMass[i])
                        {
                            int iTemp = iMass[i];
                            iMass[i] = iMass[j];
                            iMass[j] = iTemp;
                                               
                        }
                lblStatus.Text = "Сортировка по возрастанию выполнена";
            }
            if (rbtnDown.Checked == true)
            {
                for (int i = 0; i < numQuantity.Value; i++)
                    for (int j = i + 1; j < numQuantity.Value; j++)
                        if (iMass[j] > iMass[i])
                        {
                            int iTemp = iMass[i];
                            iMass[i] = iMass[j];
                            iMass[j] = iTemp;
                                                    }
                lblStatus.Text = "Сортировка по убыванию выполнена";
            }
            btnSave.Enabled = true; //делаем кнопку Сохранение доступной
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (chkSave.Checked == true)
            {
                FileStream fsFile = new FileStream("Результаты сортировки.txt", FileMode.Create);
                /*сразу выбираем название файла. Если путь не указан то файл создается в каталоге сиполняемого файла */
                StreamWriter fileWrite = new StreamWriter(fsFile);
                if (chkTitle.Checked == true)
                    fileWrite.WriteLine(txtTitle.Text);
                else
                    fileWrite.WriteLine("Отсортированный массив");
                //создаем объекты fsFile и fileWrite для записи в файл
                for (int i = 0; i < numQuantity.Value; i++)
                    fileWrite.WriteLine(Convert.ToString(iMass[i]));
                //с помощью цикла for заполняем файл данными из массива
                //конвертируя их в строковый тип
                fileWrite.Close();
                //метод Close() закрывает поток записи в файл
                lblStatus.Text = "Запись в файл выполнена";
                //сообщаем пользователю обуспешном сохранении в файл
            }
            else
                lblStatus.Text = "Файл для сохранения не выбран!";
        }
 
        private void frmSort_Load(object sender, EventArgs e)
        {
 
        }
 
        private void frmSort_FormClosing(object sender, FormClosingEventArgs e)
        {
            MessageBox.Show("Всего доброго!");
        }
 
        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void chkTitle_CheckedChanged(object sender, EventArgs e)
        {
            if (chkTitle.Checked == true)
                txtTitle.Enabled = true;
            else
                txtTitle.Enabled = false;
        }
 
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.09.2019, 19:24
Ответы с готовыми решениями:

Не могу понять log файл
Вот есть кусок лог файла: 1 - Device chooses cipher ECDHE-ECDSA-AES128-SHA256 for the SSL session with client...

Не удаётся удалить файл - Windows 10 пишет, что невозможно открыть файл INSTALL.LOG
Возникла проблема, что при попытке удалить файл игры в разделе Приложения и возможности Windows 10 выскакивает надпись, что невозможно...

Не могу создать файл
Пишу программу,которая создает некий txt файл в C://programs files. Но возникла проблема, программа не может создать этот файл и...

8
2 / 1 / 1
Регистрация: 02.09.2019
Сообщений: 1
02.09.2019, 12:56
Лучший ответ Сообщение было отмечено electronicus78 как решение

Решение

Вот один из возможных вариантов решения на примере простой консольной аппки. Запись в сам файл выполняется за пределами цикла (количество итераций неизвестно, зачем лишний раз нагружать машину).


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
using System;
using System.IO;
using System.Text;
 
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
 
            // Place a specific folder you need for the log file to be placed to
            String LogFile = Environment.CurrentDirectory + "log.txt";
 
            for (int i = 0; i < 10; i++)
            {
                int iTemp = i;
 
                sb.Append(iTemp.ToString());
                sb.AppendLine();
            }
 
            // Saving the log data to file is done outside the loop
            File.Delete(LogFile);
            File.AppendAllText(LogFile, sb.ToString());
            sb.Clear();
 
        }
    }
}
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
02.09.2019, 13:47
Цитата Сообщение от valeriusx Посмотреть сообщение
Вот один из возможных вариантов
ТС, насколько я понял, просил помочь встроить логирование именно в его код.
А не просто показать как записать, что в файл.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
02.09.2019, 14:45
Цитата Сообщение от electronicus78 Посмотреть сообщение
в домашнем задании необходимо создать LOG-файл, в который будет записываться
Можно добавить в проект такой класс
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
64
65
66
67
68
69
70
71
72
73
74
    public class Log
    {
        /// <summary>Имя файла логирования</summary>
        public static string FileName { get; private set; }
 
        /// <summary>Поток в файл логирования</summary>
        private static StreamWriter file;
 
        /// <summary>Задаёт файл для логирования</summary>
        /// <param name="fileName">Имя файла</param>
        /// <returns><see langword="true"/> если удачно</returns>
        public static bool SetFile(string fileName)
        {
            if (fileName == FileName)
                return false;
            StreamWriter _file;
            try
            {
                _file = File.AppendText(fileName);
            }
            catch (Exception)
            {
 
                return false;
            }
 
            Close();
            file = _file;
            FileName = fileName;
            return true;
        }
 
        /// <summary>Создаёт и подключает новый файл для логирования</summary>
        /// <param name="fileName">Имя файла</param>
        /// <returns><see langword="true"/> если удачно</returns>
        public static bool NewFile(string fileName)
        {
            if (fileName == FileName)
                return false;
            StreamWriter _file;
            try
            {
                _file = File.CreateText(fileName);
            }
            catch (Exception)
            {
 
                return false;
            }
 
            Close();
            file = _file;
            FileName = fileName;
            return true;
        }
 
        public static void Append(object message)
        {
            file.Write(Environment.NewLine + message.ToString());
            file.Flush();
        }
 
        public static void Close()
        {
            if (file != null)
            {
                file.Close();
                file.Dispose();
            }
 
            file = null;
            FileName = null;
        }
    }
Потом в проекте при запуске решения задаёте файл логирования и информацию идентифицирующую сеанс.
Допустим, можно в Program.Main
C#
1
2
3
4
5
6
7
8
9
10
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Log.SetFile("Log.txt");
            Log.Append(DateTime.Now);
И там где нужно что-то вывести в файл используете метод Log.Append.
Допустим так
C#
76
77
78
79
80
81
82
83
84
85
        for (int i = 0; i < numQuantity.Value; i++)
            for (int j = i + 1; j < numQuantity.Value; j++)
                if (iMass[j] < iMass[i])
                {
                    int iTemp = iMass[i];
                    Log.Append(iTemp);
                    iMass[i] = iMass[j];
                    iMass[j] = iTemp;
 
                }
0
1 / 1 / 0
Регистрация: 28.01.2019
Сообщений: 9
02.09.2019, 16:03  [ТС]
Спасибо за помощь, буду пробовать

Добавлено через 5 минут
Элд Хасп, А немного по-проще (не добавляя в проект класс) нельзя реализовать поставленную задачу?

Добавлено через 2 минуты
А то я только учусь писать, немного сложно для меня
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
02.09.2019, 21:41
electronicus78 -> Элд Хасп, А немного по-проще (не добавляя в проект класс) нельзя реализовать поставленную задачу?


Логирование подразумевает доступность вывода в лог из любого места приложения. Можно перенаправить консоль и выводить методами Console. Но мне кажется лучше и удобнее сделать свой класс.
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
02.09.2019, 22:00
Элд Хасп, +1, лучше сразу привыкать к правильному, ибо,например, в многопоточном приложении без класса логгера вообще не обойтись
1
1 / 1 / 0
Регистрация: 28.01.2019
Сообщений: 9
03.09.2019, 08:46  [ТС]
Спасибо за помощь, продолжаю учится
0
1 / 1 / 0
Регистрация: 31.10.2020
Сообщений: 4
27.04.2021, 22:20
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FileStream logFile = new ("Log-файл.txt", FileMode.Create);
StreamWriter fileWrite = new(logFile);
if (rbtnUp.Checked == true)
    for (int i = 0; i < numQuantity.Value; i++)
        for (int j = i + 1; j < numQuantity.Value; j++)
           if (iMass[j] < iMass[i])
           {
               int iTemp = iMass[i];
               iMass[i] = iMass[j];
               iMass[j] = iTemp;
               fileWrite.WriteLine(Convert.ToString(iTemp));
           }
       lblStatus.Text = "сортировка по возрастанию выполнена";
       ...
       fileWrite.Close();
       ...
Для сортировки по убыванию аналогично добавлена строка fileWrite.WriteLine(Convert.ToString(iTe mp));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2021, 22:20
Помогаю со студенческими работами здесь

Не могу расшифровать hijackthis.log
Logfile of Trend Micro HijackThis v2.0.5 Scan saved at 14:41:47, on 17.08.2015 Platform: Unknown Windows (WinNT 6.02.1008) MSIE:...

Не могу создать папку или файл: после нажатия правой кнопки мыши навожу курсор на "Создать", и ноут зависает
Доброго времени суток! Не могу создать папку или любой другой файл. При нажатии пр. кн. мыши навожу на &quot;создать&quot; и ноут...

Не могу создать текстовый файл
mkdir(&quot;dir&quot;,0777); chmod(&quot;dir&quot;,0777); $f = fopen(&quot;dir/info.txt&quot;,&quot;a&quot;); //Ошибка fclose($f); Ошибка следующего рода Warning:...

Не могу создать и записать файл
Areostar Member Откуда: Сообщений: 2004 создал несколько папок /var/www/mysystem/public_html/ пытаюсь создать в...

Не могу создать ini файл
Привет всем.Нашёл пример как создать ini файл тутhttp://devoid.com.ua/faq/cpp_builder_faq/how-create-ini-file-in-program-folder.htmlДелал...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru