#c#
#c#
Вопрос:
Извините за плохое название, я не знал, как это лучше объяснить. Я только начал в Csharp, так что, вероятно, это глупая ошибка.
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = "CPU Usage" " " (int)cpuCounter.NextValue() "%";
string[] usageCPUay = { label1.Text };
System.IO.File.WriteAllLines(@"C:UsersFilipDesktopCPUOutput.txt", usageCPUay);
}
Итак, это код, с которым у меня проблемы, и я не могу понять, как это исправить. Я пробовал с streamwriter, но у меня возникли те же проблемы. Я хочу, чтобы вывод, который выдает cpuCounter, сохранялся в текстовом файле. Но каждый раз он просто записывает последнюю загрузку процессора, а не каждую. Нравится этот неправильный вывод. Я хочу, чтобы он вводил все полученные значения использования процессора и сохранял их таким образом, но каждый новый в отдельной строке.
Ответ №1:
Давайте проанализируем ваш код:
у вас есть метод, в теле которого у вас есть label1.text, который, как я полагаю, является текстом, строкой. затем вы получаете массив строк, но этот массив содержит только один элемент, который является label1.text, затем вы записываете в текстовый файл массив, который содержит только один элемент.
Я вижу 3 ошибки: 1. — массив содержит один элемент, поэтому вы сохраняете только одну строку. 2.- в конце строки, которую вы должны записать в текстовый файл, вы должны добавить » n» для новой строки. 3.- Я понимаю изhttps://learn.microsoft.com/en-us/dotnet/api/system.io.file .writealllines?view=netcore-3.1#System_IO_File_WriteAllLines_System_String_System_String___ что он создает файл как новый, поэтому вы можете удалять то, что у вас уже есть.
Решение:
Как и в примере, который был представлен вам по ссылке, я бы сделал следующее:
label1.Text = "CPU Usage" " " (int)cpuCounter.NextValue() "%n";
string[] usageCPUay = { label1.Text };
if (!File.Exists(path))
{
// Create a file to write to.
File.WriteAllLines(path, usageCPUay);
}
else{
File.AppendAllText(path, usageCPUay);}
Комментарии:
1. Или
string usageCPU = $"CPU Usage: {(int)cpuCounter.NextValue()} %"; label1.Text = usageCPU; File.AppendAllText(path, usageCPU Environment.Newline)
. Нет необходимости проверять,File.Exists(path)
посколькуFile.AppendAllText()
файл создается сам по себе, если он не существует. Путь не должен быть жестко запрограммирован. В случае, если путь к рабочему столу текущего пользователя на самом деле является предпочтительным путем, тоstring desktopPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), CPUOutput.txt)
2. Привет, спасибо за ответ, я чувствую себя очень глупо прямо сейчас, это сработало, но я удалил массив строк и оставил его в виде строки. Поэтому вместо File. WriteAllLines Я использовал WriteAllText, поскольку AppendAllText использует строку. Так что большое вам спасибо!