使用StreamWriter创建文件

时间:2013-12-27 14:57:45

标签: c# asp.net

 public void Convert_Xls_To_CSV(string sourceFile, string targetFile)
{

   try
   {
      // wrtr = new StreamWriter(targetFile);
       StreamWriter wrtr = new StreamWriter(new FileStream(targetFile, FileMode.Create, FileAccess.Write, FileShare.Read));
       DataTable dt = ConvertExcelFileToDataTable(sourceFile);
       for (int x = 0; x < dt.Rows.Count; x++)
       {

           string rowString = "";
           for (int y = 0; y < dt.Columns.Count; y++)
           {
               rowString += "\"" + dt.Rows[x][y].ToString() + "\",";
           }

           wrtr.WriteLine(rowString);
       }

           wrtr.Close();
           wrtr.Dispose();
   }

   catch (Exception ex)
   {
       Error_lb.Text = ex.Message;
   }
}

我正在使用此函数编写csv文件。未创建targetFile。

StreamWriter wrtr = new StreamWriter(new FileStream(targetFile, FileMode.Create, FileAccess.Write, FileShare.Read));

如果该文件不存在,该行是否应该创建该文件?

2 个答案:

答案 0 :(得分:1)

简化您的号召;

sw = new StreamWriter(fileNameToSave, false)

来自 MSDN ;

StreamWriter(String,Boolean) - 使用默认编码和缓冲区大小为指定文件初始化StreamWriter类的新实例。如果文件存在,则可以覆盖或附加。如果该文件不存在,则此构造函数将创建一个新文件。

此外,您的用法与我有一些代码的内容类似;

var saveFile = new SaveFileDialog();
saveFile.InitialDirectory = Properties.Settings.Default.systemLogPath;
saveFile.RestoreDirectory = true;
saveFile.Title = "Filename to log to";
saveFile.Filter = "Text (*.txt)|*.txt|Log (*.log)|*.log";
if (saveFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
   using (var sw = new StreamWriter(saveFile.FileName, false))
   {
       foreach (var item in messages.Items)
       {
           sw.Write(item.ToString() + Environment.NewLine);
       }
   }
}

也许这对你也有用。

答案 1 :(得分:1)

read the documentation

您的第二个参数是指FileMode Enumeration,其中包含以下关于FileMode.Create

的内容
  

指定操作系统应创建新文件。如果该文件已存在,则会被覆盖。