写入整数c#的文件数组

本文关键字:文件 数组 整数 | 更新日期: 2023-09-27 18:22:08

我想向文件中写入两个正在交换的整数数组。我知道我可能写得不太好,但我该如何工作?我的代码是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HomeworkClean
{
class Program
{
    static void Main(string[] args)
    {
        RandomFunction();
        PrintListArray();
        CheckingSwappingNumbers();
        PrintListArray();
        Console.ReadKey();
    }
    public static long[] arrayOfIntNumbers = new long[10];
    public static void RandomFunction()
    {
        Random rnd = new Random();
        for (int i = 0; i < arrayOfIntNumbers.Length; i++)
        {
            arrayOfIntNumbers[i] = rnd.Next(100);
        }
    }
    public static void PrintListArray()
    {

        for (int i = 0; i < arrayOfIntNumbers.Length; i++)
        {
            new Print(arrayOfIntNumbers[i].ToString());
        }
        Console.WriteLine();
    }
    private static void Swapping(ref long firstNumber, ref long secondNumber)
    {
        long auxVariable = firstNumber;
        firstNumber = secondNumber;
        secondNumber = auxVariable;
    }
    public static void CheckingSwappingNumbers()
    {
        for (int i = 0; i < arrayOfIntNumbers.Length; i++)
        {
            for (int j = i; j < arrayOfIntNumbers.Length - 1; j++)
            {
                if (arrayOfIntNumbers[i] > arrayOfIntNumbers[j])
                {
                    Swapping(ref arrayOfIntNumbers[i], ref arrayOfIntNumbers[j]);
                }
            }
        }
    }

}
public class Print
{
    public Print(string number)
    {
        //Console.Write(number + " ");
        PrintToFile(number);
    }
    public void PrintToFile(string a)
    {
        string n = a;
        System.IO.File.WriteAllText("C:''Users''(myName)''Visual Studio 2015''Projects''HomeworkClean''HomeworkClean'bin''Debug", n);
    }
}
}

在PrintListArray中,我打算创建一个新的Print,它将数组的字符串表示作为参数,并从Print访问方法PrintToFile。但是我做错了什么?

写入整数c#的文件数组

您已经在数组中保存了array.Length项。如果要将此数组写入文件,则需要StreamStreamWriter是一个不错的选择,但也有一个更简单的方法:

public static void WriteToFile()
{
    var stringBuilder = new StringBuilder();
    foreach (var arrayElement in arrayOfIntNumbers)
    {
        stringBuilder.AppendLine(arrayElement.ToString());
    }
    File.AppendAllText(@"yourPathOfTheFile'array.txt", stringBuilder.ToString());
}

首先使用StringBuilder构建要写入Filestring。然后用写行

File.WriteAllText(@"yourPathOfTheFile'array.txt", stringBuilder.ToString());

所以数组的每个数字都在一个单独的行中,这使得它也很容易读取。

这段代码有很多错误。。。

首先,您不应该在构造函数中执行此文件I/O。构造函数应该只构建对象的实例,而不是其他实例。使用方法执行逻辑。

其次,当您尝试写入文件时,您没有指定实际的文件

System.IO.File.WriteAllText("C:''Users''(myName)''Visual Studio 2015''Projects''HomeworkClean''HomeworkClean'bin''Debug", n);

这是一个文件夹。您不能写入文件夹,必须写入文件。像这样简单的东西会更好地工作:

System.IO.File.WriteAllText("output.txt", n);

(该文件路径可能也有符号(myname)的问题,不确定这是否是故意的,但它看起来不像你想要的文件夹名称。)

第三,您每次都覆盖文件WriteAllText()将完全覆盖文件的内容。因此,在程序完成后,您将拥有的只是最后一个值,而不是所有值。最快的解决方法是简单地使用AppendAllText()

System.IO.File.AppendAllText("output.txt", n);

请注意,有更有效的方法可以将数组写入文件。但是,作为简单地让当前代码工作的练习,以上内容应该会有所帮助。就效率而言,请考虑您正在打开一个文件,对其进行写入,并在循环的每一次迭代中使用再次关闭它。相反,作为另一个练习,看看你是否能找到一种方法来循环你的值,并将它们变成一个大字符串,然后只将其写入文件一次