写入整数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。但是我做错了什么?
您已经在数组中保存了array.Length
项。如果要将此数组写入文件,则需要Stream
。StreamWriter
是一个不错的选择,但也有一个更简单的方法:
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
构建要写入File
的string
。然后用写行
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);
请注意,有更有效的方法可以将数组写入文件。但是,作为简单地让当前代码工作的练习,以上内容应该会有所帮助。就效率而言,请考虑您正在打开一个文件,对其进行写入,并在循环的每一次迭代中使用再次关闭它。相反,作为另一个练习,看看你是否能找到一种方法来循环你的值,并将它们变成一个大字符串,然后只将其写入文件一次。