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