[英]How to fix StreamWriter error “cannot implicitly convert type string to System.IO.StreamWriter”
我在 Visual Studio 2017 社区中使用 C#。
我有一个正在尝试优化的工作、功能齐全的程序。 简而言之,程序从文本文件中读取文本和数字,进行一些数学运算和重新格式化,然后输出到一个新的文本文件。
我要优化的部分是文本行写入 output 文件的方式。 这是有效的:
using System.IO
// Let's start building the MA output text file now.
// Designate an output file --- put it in same directory as original files
// give MA file ame name as the original file -- but different extension.
maOutFile = dir + "\\" + serialNumber[f] + ".ma";
//Create MA header lines and write to file.
string maHeaderLine1 = "TITLE: S/N:" + serialNumber[f] + "\n";
string maHeaderLine2 = "ENGLISH(IN)/METRIC(MM) INDICATOR :IN-P\n";
// Open up the file for writing
File.WriteAllText(maOutFile, maHeaderLine1);
File.AppendAllText(maOutFile, maHeaderLine2);
上面的代码工作正常。 我担心它效率不高,尤其是在网络速度较慢的情况下。 每次写入文件时,它都会打开和关闭文件。
所以,为了让它运行得更快,我想我会尝试 StreamWriter。
我的 StreamWriter 代码如下所示:
// Designate an output file --- put it in same directory as the original files
// give MA file same name as the original file -- with different extension.
// maOutFile = dir + "\\" + serialNumber[f] + ".ma";
StreamWriter outfile;
outfile = dir + "\\" + serialNumber[f] + ".ma";
//Create MA header lines and write to file.
string maHeaderLine1 = "TITLE: S/N:" + serialNumber[f] + "\n";
string maHeaderLine2 = "ENGLISH(IN)/METRIC(MM) INDICATOR :IN-P\n";
// Open up the file for writing
//File.WriteAllText(maOutFile, maHeaderLine1);
//File.AppendAllText(maOutFile, maHeaderLine2);
outfile.WriteLine(maHeaderLine1);
outfile.WriteLine(maHeaderLine2);
Visual Studio 不喜欢我使用 StreamWriter 的新代码。 它在 "outfile = dir + "\" + serialNumber[f] + ".ma" 行中等号右侧的所有内容下放置一条红线;
当我 hover 将鼠标悬停在红线代码上时,消息是“无法将类型字符串隐式转换为 System.IO.StreamWriter”。
我的新代码有什么不喜欢的地方?
您将字符串变量分配给 StreamWriter object,而不是创建 StreamWriter object。
尝试以下
using (StreamWriter sw = new StreamWriter(dir + "\\" + serialNumber[f] + ".ma"))
{
string maHeaderLine1 = "TITLE: S/N:" + serialNumber[f] + "\n";
string maHeaderLine2 = "ENGLISH(IN)/METRIC(MM) INDICATOR :IN-P\n";
// Open up the file for writing
//File.WriteAllText(maOutFile, maHeaderLine1);
sw.WriteLine(maHeaderLine1);
sw.WriteLine(maHeaderLine2);
}
您正在尝试在此处将字符串分配给 StreamWriter:
outfile = dir + "\\" + serialNumber[f] + ".ma";
并查看您尝试将文件打开为 stream 的代码,类似于:
string outFileDir = dir + "\\" + serialNumber[f] + ".ma";
StreamWriter outFile = new StreamWriter(outFileDir);
string fileName = dir + "\\" + serialNumber[f] + ".ma" ;
try
{
using (StreamWriter writer = new StreamWriter(fileName))
{
string maHeaderLine1 = "TITLE: S/N:" + serialNumber[f] + "\n";
string maHeaderLine2 = "ENGLISH(IN)/METRIC(MM) INDICATOR :IN-P\n";
writer.Write(maHeaderLine1 + maHeaderLine2);
}
}
catch(Exception exp)
{
Console.Write(exp.Message);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.