如何解决StreamWriter 在程序启动时清除文件
首先是一个带有你名字的程序,然后你有一个任务来查询一个从 1 到 100 的数字,然后在猜出数字之后,程序必须打印你尝试的数字并记录并检查你是否打破了记录,如果你打破了程序必须将其保存到 txt 文件中。
如果我得到正确的数字,我的 txt 文件就清晰了。
PS:评论是波兰语。
using System;
using System.Windows;
using System.IO;
// https://www.szyfry.matw.pl/
// nie diala mi rekord pointsow linia 190
// Przestrzeń nazw
namespace NumberGuesser
{
// Klasa główna
class Program
{
// Metoda główna,czyli punkt wejścia programu
static void Main(string[] args)
{
// Wyświetl informacje o aplikacji
GetAppInfo();
// Zapytaj o imię i zainicjalizuj zmienną typu tesktowego
string userName = GetUserName();
// Przywitaj użytkownika
GreetUser(userName);
// Wylosuj liczbę z przedziału od 1 do 10
Random random = new Random();
// Zainicjalizuj zmienną typu całkowtego
int numbersCountRekord = 0;
//zeby ciagle pytano cie o liczby
while (true){
// Wyświetl komunikat
int correctNumber = random.Next(1,101);
// Zainicjalizuj zmienną typu logicznego
bool correctAnswer = false;
int numbersCount = 0;
Console.WriteLine("\nZgadnij wylosowaną liczbę z przedziału od 1 do 100.");
// Powtarzaj operacje w pętli dopóki wartość zmiennej correctAnswer jest równa false
while (!correctAnswer)
{
// Pobierz i zainicjalizuj zmienną typu tesktowego
string input = Console.ReadLine();
// Zadeklaruj zmienną typu liczbowego
int guess;
// Konwertuj typ tesktowy na typ liczbowy
bool isNumber = int.TryParse(input,out guess);
// Sprawdź czy użytkownik wprowadził liczbę
if (!isNumber)
{
// Wyświetl komunikat
PrintColorMessage(ConsoleColor.Yellow,"Proszę wprowadzić liczbę.");
// Przejdź do kolejnej iteracji pętli
continue;
}
// Sprawdź czy użytkownik wprowadził liczbę z przediału od 1 do 10
if (guess < 1 || guess > 100)
{
// Wyświetl komunikat
PrintColorMessage(ConsoleColor.Yellow,"Proszę wprowadzić liczbę z przedziału od 1 do 100.");
// Przejdź do kolejnej iteracji pętli
continue;
}
// Sprawdź czy użytkownik wprowadził liczbę mniejszą od wylosowanej liczby
if (guess < correctNumber)
{
// Wyświetl komunikat
PrintColorMessage(ConsoleColor.Red,"Błędna odpowiedź. Wylosowana liczba jest większa.");
numbersCount += 1;
}
// Sprawdź czy użytkownik wprowadził liczbę większą od wylosowanej liczby
else if (guess > correctNumber)
{
// Wyświetl komunikat
PrintColorMessage(ConsoleColor.Red,"Błędna odpowiedź. Wylosowana liczba jest mniejsza.");
numbersCount += 1;
}
else
{
// Przypisz do zmiennej correctAnswer wartość true
correctAnswer = true;
// Wyświetl komunikat
PrintColorMessage(ConsoleColor.Green,"Brawo! Prawidłowa odpowiedź!");
numbersCount += 1;
//czy rekord jest aktualny
int intLine;
using(System.IO.StreamReader sr = new System.IO.StreamReader("olnitr.txt")){
string line = sr.ReadLine();
Int32.TryParse(line,out intLine);
}
if(intLine == null){
numbersCountRekord = 0;
continue;
}
if(numbersCountRekord == 0 || intLine == 0){
numbersCountRekord = numbersCount;
using(System.IO.StreamWriter sw = new System.IO.StreamWriter("olnitr.txt",false)){
sw.Write(numbersCountRekord);
}
}
// robi rekor
else if(numbersCount < intLine){
numbersCountRekord = numbersCount;
using(System.IO.StreamWriter sw = new System.IO.StreamWriter("olnitr.txt",false)){
sw.Write(numbersCountRekord);
}
}
//pokazuje liczbe prob
PrintColorMessage(ConsoleColor.magenta,$"Liczba prób: {numbersCount}");
//pokazuje twój rekord
PrintColorMessage(ConsoleColor.magenta,$"Rekord: {numbersCountRekord}");
using(System.IO.StreamWriter sw = new System.IO.StreamWriter("olnitr.txt",false)){sw.Flush();}
using(System.IO.StreamReader sr = new System.IO.StreamReader("olnitr.txt")){sr.Close();}
}
}
}
}
// Wyświetl informacje o aplikacji
static void GetAppInfo()
{
// Zainicjalizuj informacje o aplikacji
string appName = "Zgadywanie liczby";
string appVersion = "0.0.1";
string appAuthor = "Patryk Sładek";
string appModsCreator = "Paweł Wojas";
string modVersion = "0.1";
// Przygotuj tekst informacji
string info = $"[{appName}] Wersja: {appVersion},Autor: {appAuthor} | Modyfikacja Sterling Wersja: {modVersion},Autor: {appModsCreator}";
// Wyświetl komunikat w fioletowym kolorze
PrintColorMessage(ConsoleColor.magenta,info);
}
// Zapytaj o imię i zwróć wartość typu tesktowego
static string GetUserName()
{
// Zapytaj o imię
Console.WriteLine("Jak masz na imię?");
// Pobierz odpowiedź użytkownika
string inputUserName = Console.ReadLine();
// Zwróć odpowiedź
return inputUserName;
}
// Przywitaj użytkownika
static void GreetUser(string userName) // Parametrem wejściowym metody jest imię użytkownika
{
// Przygotuj tekst przywitania
string greet = $"Powodzenia {userName},odgadnij liczbę...";
// Wyświetl komunikat w niebieskim kolorze
PrintColorMessage(ConsoleColor.Blue,greet);
// Wyświetl pustą linię na konsoli
Console.WriteLine();
}
// Wyświetl komunikat w odpowiednim kolorze
static void PrintColorMessage(ConsoleColor color,string message)
{
// Zmień kolor tekstu konsoli
Console.ForegroundColor = color;
// Wyświetl komunikat na konsoli
Console.WriteLine(message);
// Zresetuj kolor tekstu konsoli
Console.ResetColor();
}
}
}
解决方法
这是给定您正在使用的构造函数和参数的默认行为:
helm repo add nginx-stable https://helm.nginx.com/stable
According to MSDN,为 System.IO.StreamWriter sw = new System.IO.StreamWriter("olnitr.txt",false)
参数提供 false
会导致新的 StreamWriter 覆盖现有文件:
追加
布尔值
true 将数据附加到文件;假覆盖
文件。如果指定的文件不存在,则该参数没有
效果,构造函数创建一个新文件。
如果您想向现有文件附加行而不是覆盖它,请提供 append
作为参数,或使用 true
类的 Append
方法之一。
没关系我有这个,我的 StreamWriter 是真的,但在我向文件添加一些文本之前,我清除了文件。
类似的东西:
using(FileStream fs = File.Open(path,FileMode.OpenOrCreate,FileAccess.ReadWrite))
{
lock(fs)
{
fs.SetLength(0);
}
}
using(System.IO.StreamWriter sw = new System.IO.StreamWriter("olnitr.txt",true)){
sw.Write(numbersCountRekord);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。