isoFileWriter.Write()和isoFileWriter.WriteLine()之间的区别

时间:2012-10-23 18:05:21

标签: c# .net windows

当我们在c#中使用隔离存储时,我们有两个来自isoFileWriter的函数。有人可以解释isoFileWriter.Write()isoFileWriter.WriteLine()

之间的区别

我正在使用以下代码:

IsolatedStorageFile myspace = IsolatedStorageFile.GetUserStoreForApplication();
myspace.CreateDirectory("Emotions");
using (var isoFileStream = new IsolatedStorageFileStream("Emotions\\history.txt", FileMode.OpenOrCreate, myspace))
{
    using (var isoFileWriter = new StreamWriter(isoFileStream))
    {
        isoFileWriter.WriteLine();
    }
}

3 个答案:

答案 0 :(得分:3)

这是StreamWriter.WriteStreamWriter.WriteLine

这两种方法的主要区别在于WriteLine会在文件中写一个新行,其中Write只会写入数据(没有换行符号)。

调用isoFileWriter.WriteLine()只会在文件中写一个新行。如果您在传递参数时调用WriteLine,即:isoFileWriter.WriteLine("Foo"),则会写入Foo后跟一个新行。另一方面,isoFileWriter.Write("Foo")只会在没有换行符的情况下写Foo

答案 1 :(得分:1)

Write() vs WriteLine()

典型的文本流。不同之处是WriteLine在文本

之后写了一个新行
iso.Write('a'); 
iso.Write('b');

将输出ab

iso.WriteLine('a'); //puts a new line after a
iso.Write('b'); //the next output will be on the same line as b

将输出

a
b

答案 2 :(得分:0)

System.IO.StreamWriter用于以特定编码将字符写入流。我相信最好使用类StreamWriter将文本追加或写入特定文件并稍后控制编写器(类)。

结构


考虑使用以下示例创建名为StreamWriter的{​​{1}}

_TextWriter

以及使用以下示例创建的另一个名为StreamWriter _TextWriter = new StreamWriter(Path) 的{​​{1}}

StreamWriter

如果您注意到,我们的_TextWriter2名为StreamWriter _TextWriter2 = new StreamWriter(Path, true); 有两个参数:StreamWriter和布尔_TextWriter2

在这里使用Path只是告诉班级它将 APPEND 字符用于该类可能创建或已存在的文件。否则,如果将其留空或插入true,则文件将被覆盖。

以下是一个示例

考虑使用包含两行以及以下内容的文件名true

  

这是第一行   
这是第二行

使用以下代码,您的文档中只有一行(false Hello

Path

通过使用以下代码,您的文档(Path)中将包含三行代表以下内容:

  

这是第一行   
这是第二行   
你好

_TextWriter.WriteLine("Hello");

现在让我们转到您的问题,Path_TextWriter2.WriteLine("Hello");

之间有什么区别?

Write()和WriteLine()


答案很简单,如果Write()WriteLine()设置为Write()的布尔值,则使用方法true会将字符写入特定流的最后一行。但会覆盖如果将布尔append留空或将其设置为append,则为特定文件的内容。

以下是一个示例

请考虑以下

  • 您的文件名为false
  • 该文件包含以下内容
  

这是我的第一行   
这是我的第二行

您有以下代码:

D:\MyDocument.txt

您期望发生什么? 文件StreamWriter _TextWriter = new StreamWriter(@"D:\MyDocument.txt"); _TextWriter.Write("Hello"); _TextWriter.Close(); //Save and Close the StreamWriter 的内容将更改为以下内容

  

您好

这是因为您没有在上面的代码中指定是否要追加,并且因为追加的默认值是D:\MyDocument.txtfalse将不会附加到文件中,因此文件将被新内容覆盖。

另一个例子

请考虑以下

  • 您的文件名为StreamWriter
  • 该文件包含以下内容
  

这是我的第一行   
这是我的第二行

您有以下代码:

D:\MyDocument.txt

您期望发生什么?

文件StreamWriter _TextWriter = new StreamWriter(@"D:\MyDocument.txt", true); _TextWriter.Write("Hello"); _TextWriter.Close(); //Save and Close the StreamWriter 的内容将更改为以下

  

这是我的第一行   
这是我的第二行你好

该文件未被单词D:\MyDocument.txt覆盖,因为您已将布尔值Hello设置为append,但您是否注意到了这一点?文件的第二行已更改为

  

这是我的第一行   
这是我的第二行你好

这意味着true被附加到可用的最后一行,这是因为您已使用Hello将文本附加到可用的最后一行。

摘要


所以,如果您不希望这种情况发生,您可以使用Write(),它将首先在文件末尾创建一行。然后,使用您指定的字符附加或覆盖文件。

相关问题