C# 将字符串数组打印到txt文件

C# 将字符串数组打印到txt文件,c#,arrays,string,C#,Arrays,String,我是编程新手,但我喜欢它,我正在尽可能多地学习。 我正在编写一个小应用程序,它有一个多行文本框(txtOutput),我在其中输入我的注释。这些注释/行随后以字符串数组的形式传输。 然后我调用一个类来传输一些变量和数组,以便将所有内容打印到一个txt文件中。 虽然我可以用变量中的数据填充txt文件,但我无法将数组的内容获取到txt文件中。我希望能得到一些帮助 文本从TXT输出到数组 public void button6_Click(object sender, EventArgs e)

我是编程新手,但我喜欢它,我正在尽可能多地学习。 我正在编写一个小应用程序,它有一个多行文本框(txtOutput),我在其中输入我的注释。这些注释/行随后以字符串数组的形式传输。 然后我调用一个类来传输一些变量和数组,以便将所有内容打印到一个txt文件中。 虽然我可以用变量中的数据填充txt文件,但我无法将数组的内容获取到txt文件中。我希望能得到一些帮助

文本从TXT输出到数组

public void button6_Click(object sender, EventArgs e)
    {
       string[] comments = txtOutput.Text.Split(' ');
将数组和其他变量传输到class1(在那里我有代码来创建并保存这些变量的内容以及数组到txt文件)。其他两个变量在文件上打印出来,没有问题

WriteTextFile WTR = new WriteTextFile();
        WTR.Save(temperatura, speedMotore, comments);
Class1代码(我在其中生成txt文件并保存它。

class WriteTextFile
{
    public void Save(int sendTem, int sendMot, string[] comments)
    {
        DateTime Now = DateTime.Now;
        string dateTime = Now.ToString("F");
        SaveFileDialog sd = new SaveFileDialog();
        sd.Filter = "Text File | *.txt";
        if (sd.ShowDialog() == DialogResult.OK)  
{  
using (StreamWriter sw = new StreamWriter(sd.FileName))  
{
    sw.Write("File diconfigurazione del programma Arduino Control " + "\r\n");
    sw.Write("\r\n");
    sw.Write(dateTime + "\r\n");
    sw.Write("\r\n");
    sw.Write("\r\n");
    sw.Write("La temperatura impostata in PWM1 è: " + sendMot + "\r\n");
    sw.Write("\r\n");
    sw.Write("La velocità del motore impostata in PWM2 è: " + sendTem + "\r\n");
    sw.Write("\r\n");
    sw.Write(comments[1] + "\r\n");
    sw.Dispose();  
    sw.Close();
}  


}}}

我不确定是否正确地将任何文本从txt输出传输到“comments”数组。我希望实现的是将txt输出中的这些行逐个打印到txt文件上,而我只是收到一条消息,上面写着“索引超出范围……”

不要像在
using
语句中那样调用
Dispose
using
语句将解决此问题。这可能是问题的原因-流将在刷新之前进行处理

只要保持:

using (StreamWriter sw = new StreamWriter(sd.FileName))  
{
    sw.Write("File diconfigurazione del programma Arduino Control " + "\r\n");
    sw.Write("\r\n");
    sw.Write(dateTime + "\r\n");
    sw.Write("\r\n");
    sw.Write("\r\n");
    sw.Write("La temperatura impostata in PWM1 è: " + sendMot + "\r\n");
    sw.Write("\r\n");
    sw.Write("La velocità del motore impostata in PWM2 è: " + sendTem + "\r\n");
    sw.Write("\r\n");
    sw.Write(comments[1] + "\r\n");
    sw.Close();
}  

问题解决了。谢谢大家的评论。 我的程序中的数组的工作原理如下:

string[] comments = textBox5.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
然后打印内容:

foreach (string i in comments)
{
sw.Write(i + "\r\n");
}

您的数组索引从零开始-我怀疑
comments[0]
而不是
comments[1]
可能会起作用。您可以使用
sw.Write
,每次添加字符串
“\r\n”
。使用
sw.WriteLine
更容易、更清晰。您不必使用
sw.Dispose()
sw.Close()
因为您已使用
块将
sw
放入
中(您必须这样做)。您得到的“索引超出范围”来自数组访问
注释[1]
。请检查
注释。长度
中的索引[…]
从0开始,长度减1结束。我尝试将索引从1更改为0,结果是没有错误,但没有打印出来。我尝试删除sw.dispose,但错误仍然存在。@user2280374-调试通过了吗?根据您的描述,
注释实际上是空的,至少在调用
Save
string[]comments=txtOutput.Text.Split(“”);
的点可能应该是
string[]comments=txtOutput.Text.Split(new[]{Environment.NewLine},StringSplitOptions.None);
-您当前的代码试图用空格分割。新行不是空格。@user2280374-我再问一次-您是否通过该方法进行了调试?您是否检查了
注释
数组的值?您是否检查了
分割
的位置以查看它是否在数组中放置了任何内容?您是否尝试查看正在分割的内容?De窃听对你来说很重要-我看不出你有什么和没有什么,所以你需要这样做。