-1

当我们在 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();
    }
}
4

3 回答 3

3

这是StreamWriter.WriteStreamWriter.WriteLine

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

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

于 2012-10-23T18:07:49.683 回答
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
于 2012-10-23T18:08:12.180 回答
1

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

结构


考虑使用以下示例创建StreamWriter被调用_TextWriter

StreamWriter _TextWriter = new StreamWriter(Path)

另一个StreamWriter调用_TextWriter2使用以下示例创建

StreamWriter _TextWriter2 = new StreamWriter(Path, true);

如果你注意到了,我们的StreamWriter被调用_TextWriter2有两个参数:Path和一个布尔值true

在这里使用true只是告诉类它将用于将字符附加到该类可能创建或已经存在的文件中。否则,如果您将此留空或插入false,则该文件将被覆盖。

这是一个例子

考虑有一个Path包含两行内容的文件名

这是第一行
这是第二行

通过使用以下代码,您的文档 ( Path)中将只有一行,即Hello

_TextWriter.WriteLine("Hello");

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

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

_TextWriter2.WriteLine("Hello");

Write()现在让我们转到您的问题,和之间有什么区别WriteLine()

写()和写线()


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

这是一个例子

考虑以下

  • 你有一个文件名D:\MyDocument.txt
  • 该文件包含以下内容

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

您有以下代码:

StreamWriter _TextWriter = new StreamWriter(@"D:\MyDocument.txt");
_TextWriter.Write("Hello");  
_TextWriter.Close(); //Save and Close the StreamWriter

你期望会发生什么?文件内容D:\MyDocument.txt会变成如下

你好

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

另一个例子

考虑以下

  • 你有一个文件名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因为您已将布尔值设置appendtrue但您注意到了吗?文件的第二行已更改为

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

这意味着Hello附加到可用的最后一行,这是因为您使用Write()了它将文本附加到可用的最后一行。

概括


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

于 2012-10-23T18:46:29.953 回答