簡體   English   中英

如何修復 StreamWriter 錯誤“無法將類型字符串隱式轉換為 System.IO.StreamWriter”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM