gpt4 book ai didi

c# - 为什么 FileStream 不作为 Streamwriter 的参数写入文本文件?

转载 作者:行者123 更新时间:2023-11-30 13:37:12 27 4
gpt4 key购买 nike

在下面的代码中,当使用以下语句时,我能够将字符串 'fullname' 的内容写入指定目录中的文本文件:System.IO.File.WriteAllText(路径, 全名);但是,如果我将字符串路径写入 FileStream 对象(指定了参数),然后将该 FileStream 对象作为参数传递给 StreamWriter 对象,则会创建文件,但不会写入任何内容。

第一次尝试:注释掉 System.IO.File.WriteAllText(path, fullname); 并使用它上面的三行。这将创建文件,但没有内容写入文件。

第二次尝试:取消注释 System.IO.File.WriteAllText(path, fullname); 语句并注释其上方的三行。这会根据需要执行。

这里是完整的代码块:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileInputOutput
{
class Program
{
static void Main(string[] args)
{
// Use the Split() method of the String Class
string fullname = " Robert Gordon Orr ";
fullname = fullname.Trim();
string[] splitNameArray = fullname.Split(' ');
Console.WriteLine("First Name is: {0}", splitNameArray[0]);
Console.WriteLine("Middle Name is: {0}", splitNameArray[1]);
Console.WriteLine("Last Name is: {0}", splitNameArray[2]);
Console.WriteLine("Full name is: {0}", fullname);
string path = @"C:\Programming\C#\C# Practice Folder\Console Applications\FileInputOutput\textfile.txt";

FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite);
StreamWriter toFile = new StreamWriter(fs);
toFile.Write(fullname);

//System.IO.File.WriteAllText(path, fullname);`enter code here`

Console.ReadLine();

}
}
}

最佳答案

正如其他人所说:流必须在 .NET 中刷新才能写入磁盘。这可以手动完成,但是我会简单地更改您的代码以在您的流上使用 using 语句:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileInputOutput
{
class Program
{
static void Main(string[] args)
{
// Use the Split() method of the String Class
string fullname = " Robert Gordon Orr ";
fullname = fullname.Trim();
string[] splitNameArray = fullname.Split(' ');
Console.WriteLine("First Name is: {0}", splitNameArray[0]);
Console.WriteLine("Middle Name is: {0}", splitNameArray[1]);
Console.WriteLine("Last Name is: {0}", splitNameArray[2]);
Console.WriteLine("Full name is: {0}", fullname);
string path = @"C:\textfile.txt";

using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
{
using (StreamWriter toFile = new StreamWriter(fs))
{
toFile.Write(fullname);
}
}
//System.IO.File.WriteAllText(path, fullname);`enter code here`

Console.ReadLine();

}
}
}

在流上调用 Dispose()(就像 using 隐式执行的那样)会导致流在 using block 的末尾被刷新和关闭。

关于c# - 为什么 FileStream 不作为 Streamwriter 的参数写入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24387915/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com