Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在CSV文件中编辑/保存行_C#_Asp.net_Csv - Fatal编程技术网

C# 在CSV文件中编辑/保存行

C# 在CSV文件中编辑/保存行,c#,asp.net,csv,C#,Asp.net,Csv,在遵循这一点之后,我能够创建 但我的问题是怎么做 是否将新行保存或写入文件 我试过“StreamWriter”,但它只写最新的 创建了一行 有什么建议吗 以下是我目前的代码: string path = @"C:/CSV.txt"; string[] lines = File.ReadAllLines(path); var splitlines = lines.Select(l => l.Split(',')); foreach (var line in splitlines) {

在遵循这一点之后,我能够创建 但我的问题是怎么做 是否将新行保存或写入文件

我试过“StreamWriter”,但它只写最新的 创建了一行

有什么建议吗

以下是我目前的代码:

string path = @"C:/CSV.txt";

string[] lines = File.ReadAllLines(path);

var splitlines = lines.Select(l => l.Split(','));

foreach (var line in splitlines)
{
   if(line[1].Contains("34"))
   {                                        
     line[1] = "100";
     var newline = string.Join(",", line);
     StreamWriter sr = new StreamWriter(path);    
     sr.WriteLine(newline);
     sr.Close();                                      
   }
 }

也许像这样的事情,您可能需要清理它并添加一些错误处理,但它确实起到了作用

    string path = @"C:\\CSV.txt";

    string[] lines = File.ReadAllLines(path);
    for (int i = 0; i < lines.Length; i++)
    {
        string line = lines[i];
        if (line.Contains(","))
        {
            var split = line.Split(',');
            if (split[1].Contains("34"))
            {
                split[1] = "100";
                line = string.Join(",", split);
            }
        }
    }
    File.WriteAllLines(@"C:\\CSV.txt", lines);
string path=@“C:\\CSV.txt”;
string[]lines=File.ReadAllLines(路径);
对于(int i=0;i
这是您使用
StreamReader
类的解决方案:

String path = @"C:\CSV.txt";
List<String> lines = new List<String>();

if (File.Exists(path));
{
    using (StreamReader reader = new StreamReader(path))
    {
        String line;

        while ((line = reader.ReadLine()) != null)
        {
            if (line.Contains(","))
            {
                String[] split = line.Split(',');

                if (split[1].Contains("34"))
                {
                    split[1] = "100";
                    line = String.Join(",", split);
                }
            }

            lines.Add(line);
        }
    }

    using (StreamWriter writer = new StreamWriter(path, false))
    {
        foreach (String line in lines)
            writer.WriteLine(line);
    }
}
stringpath=@“C:\CSV.txt”;
列表行=新列表();
如果(File.Exists(path));
{
使用(StreamReader=新StreamReader(路径))
{
弦线;
而((line=reader.ReadLine())!=null)
{
if(第行包含(“,”)
{
String[]split=line.split(',');
if(拆分[1]。包含(“34”))
{
拆分[1]=“100”;
line=String.Join(“,”,split);
}
}
行。添加(行);
}
}
使用(StreamWriter=newstreamwriter(路径,false))
{
foreach(行中的字符串行)
writer.WriteLine(行);
}
}

如果要覆盖该文件,请将StreamWriter构造函数与
append=false

优秀解决方案Zarathos一起使用。不知道StreamWriter构造函数。但是现在我知道了:)谢谢,我没有看到任何东西被写出来或印刷出来。为什么要投反对票?好吧,我忘了在上面的代码块中添加“StreamWriter”行(我现在已经更新了)。但正如我在文章中提到的,我尝试了StreamWriter,但只能将新行写入文件。然而,我忘记了数组列表或使用列表的更好方法必须更新并重写到Zarathos解决方案更正的文件中。否决票(现在被删除)是因为缺少代码。然而,考虑到“contains”有时才是真的,因此
WriteLine
有时才被执行,这就不足为奇了。。此外,写入封闭流也是无效的。这是从网格获取值并更新.CSV文件进程。如果你们有任何疑问,和我分享。这工作很好。
        string str;
        string PID;
        string PN;
        string UP;
        string DIS;
        string STK;
        string CSVFilePathName = @"C:\admin.csv";
        string[] Lines = File.ReadAllLines(CSVFilePathName);
        File.Delete(CSVFilePathName);
        StreamWriter sw = new StreamWriter(CSVFilePathName", true);

            PID = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text;
            PN = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text;
            UP = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text;
            DIS = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text;
            STK = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text;
        foreach (string li in Lines)
        {
            string[] Fields = li.Split(',');
            if(PID==Fields[0])
            {                                                                     
                str = PID + "," + PN + "," + UP + "," + DIS + "," + STK;                                 
            }
            else
            {
                str = Fields[0] + "," + Fields[1] + "," + Fields[2] + "," + Fields[3] + "," + Fields[4];                 
            }
            sw.WriteLine(str);
        }
        sw.Flush();
        sw.Close();