簡體   English   中英

從 C# 中的 a.txt 文件中讀取和刪除隨機行

[英]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);
                    }
                }
            }
        }
    }
}

當您將從文件中讀取的數字與隨機生成的數字進行比較時,您實際上是在將stringint進行比較,因此您的條件永遠不會為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM