从c#中的文本文件中读取整数并将其写入数组

从c#中的文本文件中读取整数并将其写入数组,c#,image,file,integer,pixels,C#,Image,File,Integer,Pixels,我试图从文本文件中读取像素值并生成一个图像文件。但首先我要确保我可以读取文件中的所有值。我使用了这段代码,但是输出遗漏了输入文件中的一些整数——最后一个。我不知道为什么!你能帮助我吗?代码如下: namespace txtToImg { public partial class Form1 : Form { public Form1() { InitializeComponent(); TextWri

我试图从文本文件中读取像素值并生成一个图像文件。但首先我要确保我可以读取文件中的所有值。我使用了这段代码,但是输出遗漏了输入文件中的一些整数——最后一个。我不知道为什么!你能帮助我吗?代码如下:

namespace txtToImg
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            TextWriter tw = new StreamWriter("D:\\out.txt");
            string fileContent = File.ReadAllText("D:\\in.txt");

            string[] integerStrings = fileContent.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            int[] integers = new int[integerStrings.Length];
            //tw.Write(integerStrings.Length);

            for (int n = 0; n < integerStrings.Length; n++)
            {
                integers[n] = int.Parse(integerStrings[n]);

                tw.Write(integers[n]+" ");


            }
        }
    }
}
名称空间txtToImg
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
TextWriter tw=新的StreamWriter(“D:\\out.txt”);
字符串fileContent=File.ReadAllText(“D:\\in.txt”);
string[]integerStrings=fileContent.Split(新字符[]{''},StringSplitOptions.RemoveEmptyEntries);
int[]integers=新的int[integerStrings.Length];
//tw.Write(integerStrings.Length);
for(int n=0;n
我同意Andrew的评论,您的streamWriter对象没有关闭,因此首先我会尝试一下。我做了下面的更改并尝试了您正在做的事情,我的输出文件包含了所有条目

 using (TextWriter tw = new StreamWriter(@"D:\out.txt"))
        {
            string fileContent = File.ReadAllText(@"D:\in.txt");

            string[] integerStrings = fileContent.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            int[] integers = new int[integerStrings.Length];

            for (int n = 0; n < integerStrings.Length; n++)
            {
                integers[n] = int.Parse(integerStrings[n]);
                tw.Write(integers[n] + " ");
            }
        }
使用(TextWriter tw=new StreamWriter(@“D:\out.txt”))
{
字符串fileContent=File.ReadAllText(@“D:\in.txt”);
string[]integerStrings=fileContent.Split(新字符[]{''},StringSplitOptions.RemoveEmptyEntries);
int[]integers=新的int[integerStrings.Length];
for(int n=0;n
好的,我刚刚运行了它,正如我所怀疑的,在循环之后您需要以下内容:

tw.Close();

我注意到StreamWriter对象似乎没有关闭。不确定这是否会有什么不同,但这是我能看到的唯一明显的东西。您确定这不应该是
fileContent.Split(newchar[]{','\n'},…
?我的整数是按空格分割的,我不需要“\n”或“,”。谢谢!安德鲁,非常感谢!我关闭了StreamWriter对象tw,它工作了!我不知道为什么,但它现在工作得很好!再次感谢!@AnaZlateva最好的方法是使用
使用
,就像下面Bearcat的建议一样。然后它会自动关闭至少,即使出现异常。就像Andrew建议的那样,我会将您的TextWriter包装在using语句中。它实现IDiposable,因此在正确处理右括号tw之后,您的out文件将被释放并可供其他进程访问。如果此答案解决了您的问题,请不要忘记选择它作为您问题的答案