[英]Reading and deleting a Random Line from a .txt File in C#
我想在 C# 控制台中創建一個隨機數生成器,該控制台第二次沒有顯示數字。 所以我制作了一個腳本,它從 a.txt 文件中選擇一個隨機數,讀取它並隨后從 .txt 中刪除它。
我知道沒有閱讀該行並給出 output 的部分,因為我首先想獲得刪除部分。 問題是,它只是刪除了 full.txt 文件。
腳本:
using System;
using System.IO;
namespace Random_Number_generator
{
class Program
{
static void Main(string[] args)
{
//Generates the random Number
int RandomNumber;
string BGInfo;
Random rnd = new Random();
int GetRandomInt(int min, int max)
{
return rnd.Next(min, max);
}
RandomNumber = GetRandomInt(1, 25);
// 1. Read the content of the file
string[] readText = File.ReadAllLines("D:/BG_Numbers.txt");
Console.WriteLine("Readed: " + readText);
Console.ReadKey();
// 2. Empty the file
File.WriteAllText("D:/BG_Numbers.txt", String.Empty);
using (StreamWriter writer = new StreamWriter("D:/BG_Numbers.txt"))
{
foreach (string s in readText)
{
if (!s.Equals(RandomNumber))
{
writer.WriteLine(s);
}
}
}
}
}
}
當您將從文件中讀取的數字與隨機生成的數字進行比較時,您實際上是在將string
與int
進行比較,因此您的條件永遠不會為true
。 您可以使用其ToString
值將隨機數更改為string
,也可以在讀取文件內容時將文件中的行轉換為實際數字,如下例所示:
const string fileName = "D:/BG_Numbers.txt";
// Generate random number
int randomNumber;
Random random = new Random();
randomNumber = random.Next(1, 25);
Console.WriteLine($"Your random number is: {randomNumber}");
Console.ReadKey();
// Read the file content
int[] numbers = File.ReadAllLines(fileName).Select(int.Parse).ToArray();
Console.WriteLine($"Read: [{string.Join(", ", numbers)}]");
Console.ReadKey();
// Clear the file content
File.WriteAllText(fileName, string.Empty);
Console.WriteLine("File content cleared.");
Console.ReadKey();
using (StreamWriter writer = new StreamWriter(fileName))
{
foreach (int number in numbers)
{
if (!number.Equals(randomNumber)) // This line was comparing 'string' with 'int'
{
writer.WriteLine(number);
}
}
}
Console.WriteLine("Done!");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.