C# 如何防止在我的文件中添加空行?

C# 如何防止在我的文件中添加空行?,c#,streamwriter,C#,Streamwriter,我正在创建一个文本文件,最后一行是“” 是我用来创建文件(或附加文件)的 现在是DateTime对象 我使用您的(Karl)代码创建了一个名为“readLastDate()的方法” 我得到的是第一次约会。这样做: sw.Write(now.ToShortDateString()); 以下是的MSDN文档 以下是的MSDN文档 更新: 继续使用WriteLine,但更改从文件中读取值的方式: using (StreamReader sr = new StreamReader(path)) {

我正在创建一个文本文件,最后一行是“”

是我用来创建文件(或附加文件)的

现在是DateTime对象

我使用您的(Karl)代码创建了一个名为“readLastDate()的方法”

我得到的是第一次约会。

这样做:

sw.Write(now.ToShortDateString());
以下是的MSDN文档

以下是的MSDN文档

更新:

继续使用
WriteLine
,但更改从文件中读取值的方式:

using (StreamReader sr = new StreamReader(path))
{
    // Initialize to null so we are not stuck in loop forever in case there is nothing in the file to read
    String line = null;

    do 
    {
        line = sr.ReadLine();

        // Is this the end of the file?
        if (line == null)
        {
            // Yes, so bail out of loop
            return;
        }

        // Is the line empty?
        if (line == String.Empty)
        {
            // Yes, so skip it
            continue;
        }

        // Here you process the non-empty line

    } while (true);
}
这样做:

sw.Write(now.ToShortDateString());
以下是的MSDN文档

以下是的MSDN文档

更新:

继续使用
WriteLine
,但更改从文件中读取值的方式:

using (StreamReader sr = new StreamReader(path))
{
    // Initialize to null so we are not stuck in loop forever in case there is nothing in the file to read
    String line = null;

    do 
    {
        line = sr.ReadLine();

        // Is this the end of the file?
        if (line == null)
        {
            // Yes, so bail out of loop
            return;
        }

        // Is the line empty?
        if (line == String.Empty)
        {
            // Yes, so skip it
            continue;
        }

        // Here you process the non-empty line

    } while (true);
}

您是否尝试过使用命令.Trimend('\n')


您是否尝试过使用命令.Trimend('\n')


您可以使用
软件编写
并预先挂起换行符。不幸的是,这将在文件开头给您一个空行。

您可以使用
sw.Write
并预先挂起换行符。不幸的是,这会在文件的开头给你一个空行。

我可能是为了实用和简单,但是跳过所有流的东西,直接像这样使用
文件

string newLine = "";
if (!isFirstLine)
    newLine = Environment.NewLine;

File.AppendAllText(
    filePath, 
    string.Format("{0}{1}", newLine, DateTime.Now.ToString()));

我可能是为了实用和简单,但跳过所有流的东西,像这样直接使用
File

string newLine = "";
if (!isFirstLine)
    newLine = Environment.NewLine;

File.AppendAllText(
    filePath, 
    string.Format("{0}{1}", newLine, DateTime.Now.ToString()));

添加记录应该是调用
File.AppendAllText
的简单过程,正如另一个答案中所指出的那样。尽管我建议:

File.AppendAllText(filePath, DateTime.Now.ToString() + Environment.NewLine);
从文件中读取最后日期也很容易:

string lastGoodLine = "01/01/1900";
using (StringReader sr = new StringReader(filePath))
{
    while (!sr.EndOfStream)
    {
        string line = sr.ReadLine();
        if (!string.IsNullOrEmpty(line))
            lastGoodLine = line;
    }
}
return lastGoodLine;

添加记录应该是调用
File.AppendAllText
的简单过程,正如另一个答案中所指出的那样。尽管我建议:

File.AppendAllText(filePath, DateTime.Now.ToString() + Environment.NewLine);
从文件中读取最后日期也很容易:

string lastGoodLine = "01/01/1900";
using (StringReader sr = new StringReader(filePath))
{
    while (!sr.EndOfStream)
    {
        string line = sr.ReadLine();
        if (!string.IsNullOrEmpty(line))
            lastGoodLine = line;
    }
}
return lastGoodLine;


使用
Write
,而不是
WriteLine
WriteLine
追加一个新行字符。如果这样做,则所有数据都在一行上。我需要每一行都有日期,请不要LINQ。我使用的是.Net 2.0使用
Write
,而不是
WriteLine
WriteLine
追加一个新行字符。如果这样做,则所有数据都在一行上。我需要每一行都有日期,请不要LINQ。我使用的是.Net 2.0,而不是我的代码。(除了写入对我来说不起作用,因为当应用程序运行第2次、第3次、第100次时,所有数据都在一行上)。我每行需要1个日期你是在循环中写这些吗?@CocoaDev:然后在换行之前:
sw.WriteLine();Write(now.ToShortDateString())。这意味着空文本文件中的第一项将为空,但您可以轻松地手动更正它,或在写入之前进行检查,以确定它是否为第一行。否。应用程序启动时会检查文件中的日期。如果它本月已经运行,我们将退出。否则我们会工作,一旦退出,我们会将日期写入文本文件。我使用WriteLine是因为每个日期都必须在一个新的日期line@CocoaDev-你的问题是,当你在读取文件中的行时,在文件结尾遇到空白行吗?这就是我的代码。(除了写入对我来说不起作用,因为当应用程序运行第2次、第3次、第100次时,所有数据都在一行上)。我每行需要1个日期你是在循环中写这些吗?@CocoaDev:然后在换行之前:
sw.WriteLine();Write(now.ToShortDateString())。这意味着空文本文件中的第一项将为空,但您可以轻松地手动更正它,或在写入之前进行检查,以确定它是否为第一行。否。应用程序启动时会检查文件中的日期。如果它本月已经运行,我们将退出。否则我们会工作,一旦退出,我们会将日期写入文本文件。我使用WriteLine是因为每个日期都必须在一个新的日期line@CocoaDev你的问题是在文件的结尾遇到空白行,同时读取文件中的行。在应用程序启动之前,这些文件不存在run@CocoaDev我不是要在日期前预加文件,而是要在日期前预加Environment.NewLine。您仍在跳过代码中的空行。无法在文件前加前缀。在应用程序启动之前,这些文件不存在run@CocoaDev我不是要在日期前预加文件,而是要在日期前预加Environment.NewLine。您仍然会跳过代码中的空行。