【问题标题】:Open existing file, append a single line打开现有文件,追加一行
【发布时间】:2011-02-19 16:33:30
【问题描述】:

我想打开一个文本文件,添加一行,然后关闭它。

【问题讨论】:

    标签: c# file


    【解决方案1】:

    您可以为此使用File.AppendAllText

    File.AppendAllText(@"c:\path\file.txt", "text content" + Environment.NewLine);
    

    【讨论】:

      【解决方案2】:
      using (StreamWriter w = File.AppendText("myFile.txt"))
      {
        w.WriteLine("hello");
      }
      

      【讨论】:

      • 这是写入文件的正确方法,因为您生成了很多行,以避免内存问题。
      【解决方案3】:

      选择一个!但第一个非常简单。最后一个可能用于文件操作的工具:

      //Method 1 (I like this)
      File.AppendAllLines(
          "FileAppendAllLines.txt", 
          new string[] { "line1", "line2", "line3" });
      
      //Method 2
      File.AppendAllText(
          "FileAppendAllText.txt",
          "line1" + Environment.NewLine +
          "line2" + Environment.NewLine +
          "line3" + Environment.NewLine);
      
      //Method 3
      using (StreamWriter stream = File.AppendText("FileAppendText.txt"))
      {
          stream.WriteLine("line1");
          stream.WriteLine("line2");
          stream.WriteLine("line3");
      }
      
      //Method 4
      using (StreamWriter stream = new StreamWriter("StreamWriter.txt", true))
      {
          stream.WriteLine("line1");
          stream.WriteLine("line2");
          stream.WriteLine("line3");
      }
      
      //Method 5
      using (StreamWriter stream = new FileInfo("FileInfo.txt").AppendText())
      {
          stream.WriteLine("line1");
          stream.WriteLine("line2");
          stream.WriteLine("line3");
      }
      

      【讨论】:

        【解决方案4】:

        或者你可以使用File.AppendAllLines(string, IEnumerable<string>)

        File.AppendAllLines(@"C:\Path\file.txt", new[] { "my text content" });
        

        【讨论】:

          【解决方案5】:

          可能想查看TextWriter 类。

          //Open File
          TextWriter tw = new StreamWriter("file.txt");
          
          //Write to file
          tw.WriteLine("test info");
          
          //Close File
          tw.Close();
          

          【讨论】:

          • 用新文本替换当前内容
          【解决方案6】:

          File.AppendText 会这样做:

          using (StreamWriter w = File.AppendText("textFile.txt")) 
          {
              w.WriteLine ("-------HURRAY----------");
              w.Flush();
          }
          

          【讨论】:

            【解决方案7】:

            技术上最好的方法可能是这里:

            private static async Task AppendLineToFileAsync([NotNull] string path, string line)
            {
                if (string.IsNullOrWhiteSpace(path)) 
                    throw new ArgumentOutOfRangeException(nameof(path), path, "Was null or whitepsace.");
            
                if (!File.Exists(path)) 
                    throw new FileNotFoundException("File not found.", nameof(path));
            
                using (var file = File.Open(path, FileMode.Append, FileAccess.Write))
                using (var writer = new StreamWriter(file))
                {
                    await writer.WriteLineAsync(line);
                    await writer.FlushAsync();
                }
            }
            

            【讨论】:

            • 快速连续调用时不抛出错误的唯一选项
            【解决方案8】:
            //display sample reg form in notepad.txt
            using (StreamWriter stream = new FileInfo("D:\\tt.txt").AppendText())//ur file location//.AppendText())
            {
               stream.WriteLine("Name :" + textBox1.Text);//display textbox data in notepad
               stream.WriteLine("DOB : " + dateTimePicker1.Text);//display datepicker data in notepad
               stream.WriteLine("DEP:" + comboBox1.SelectedItem.ToString());
               stream.WriteLine("EXM :" + listBox1.SelectedItem.ToString());
            }
            

            【讨论】:

              【解决方案9】:

              我们可以使用

              public StreamWriter(string path, bool append);
              

              打开文件时

              string path="C:\\MyFolder\\Notes.txt"
              StreamWriter writer = new StreamWriter(path, true);
              

              第一个参数是一个保存完整文件路径的字符串 第二个参数是附加模式,在这种情况下为真

              可以通过以下方式写入文件:

              writer.Write(string)

              writer.WriteLine(string)

              示例代码

              private void WriteAndAppend()
              {
                          string Path = Application.StartupPath + "\\notes.txt";
                          FileInfo fi = new FileInfo(Path);
                          StreamWriter SW;
                          StreamReader SR;
                          if (fi.Exists)
                          {
                              SR = new StreamReader(Path);
                              string Line = "";
                              while (!SR.EndOfStream) // Till the last line
                              {
                                  Line = SR.ReadLine();
                              }
                              SR.Close();
                              int x = 0;
                              if (Line.Trim().Length <= 0)
                              {
                                  x = 0;
                              }
                              else
                              {
                                  x = Convert.ToInt32(Line.Substring(0, Line.IndexOf('.')));
                              }
                              x++;
                              SW = new StreamWriter(Path, true);
                              SW.WriteLine("-----"+string.Format("{0:dd-MMM-yyyy hh:mm:ss tt}", DateTime.Now));
                              SW.WriteLine(x.ToString() + "." + textBox1.Text);
              
                          }
                          else
                          {
                              SW = new StreamWriter(Path);
                              SW.WriteLine("-----" + string.Format("{0:dd-MMM-yyyy hh:mm:ss tt}", DateTime.Now));
                              SW.WriteLine("1." + textBox1.Text);
                          }
                          SW.Flush();
                          SW.Close();
                      }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-12-01
                • 1970-01-01
                • 2015-03-31
                • 1970-01-01
                • 2013-11-21
                • 1970-01-01
                相关资源
                最近更新 更多