【发布时间】:2017-08-20 23:40:18
【问题描述】:
您好,我正在尝试将数据写入 .csv 文件。我的代码正在创建新文件,但没有写入。这是代码的较短版本,其中名称、年龄和性别变量已经预先确定。在我的实际应用程序中,这些变量来自文本框(我已确保来自文本框的数据实际上是使用 MessageBox 填充这些变量)。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string filePath = "C:\\Users\\Jamie\\Desktop\\test.csv";
string name = "jamie";
int age = 69;
string sex = "male";
if (!(File.Exists(filePath)))
{
FileStream fs = new FileStream(filePath, FileMode.CreateNew, FileAccess.Write);
if (fs.CanWrite)
{
string columnTitles = "name,age,sex\n";
fs.Write(Encoding.ASCII.GetBytes(columnTitles), 0, 0);
string input = name + "," + age + "," + sex + "\n";
fs.Write(Encoding.ASCII.GetBytes(input), 0, 0);
fs.Flush();
fs.Close();
}
}
else
{
FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write);
if (fs.CanWrite)
{
if (new FileInfo(filePath).Length == 0)
{
string columnTitles = "name,age,sex\n";
fs.Write(Encoding.ASCII.GetBytes(columnTitles), 0, 0);
}
string input = name + "," + age + "," + sex + "\n";
fs.Write(Encoding.ASCII.GetBytes(input), 0, 0);
fs.Flush();
fs.Close();
}
}
}
}
}
【问题讨论】:
-
您指定它写入零字节:msdn.microsoft.com/en-us/library/… 在一行中获取您的字节,然后将它们写入下一行。
-
你有什么理由不使用这样的东西吗? msdn.microsoft.com/en-us/library/92e05ft3(v=vs.110).aspx
-
哎呀,我现在看到了,谢谢
-
如果您的 csv 字段中有换行符、逗号或引号,请考虑使用 CSV 写作库。
-
在 try catch 块中编写代码始终是一个好习惯,这样您就可以轻松跟踪代码中的错误
标签: c# csv filestream