c# - BinaryWriter 不写入文件

标签 c# io binaryfiles

我正在尝试将数据文件写入磁盘,以便可以缓存无法放入内存的大量数据。在一些早期测试中,我发现有时我会写入数据,有时则不会。这是一个显示该过程不起作用的示例:

using System.IO;
using System;


namespace TestBinaryWriter
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            double dFoo = 1234.1234;
            BinaryWriter bw = new BinaryWriter(File.OpenWrite("asdf"));
            bw.Write(dFoo);
            bw.Write(BitConverter.GetBytes(dFoo));
        }
    }
}

文件“asdf”的内容是空的,我不明白为什么。

最佳答案

在using block 中初始化并使用BinaryWriter:

using (BinaryWriter bw = new BinaryWriter(File.OpenWrite("asdf"))
{
    bw.Write(dFoo);
    bw.Write(BitConverter.GetBytes(dFoo));
}

您的实现有什么问题是 Stream 没有关闭(通过调用 close 方法)并且内容没有正确地刷新到文件中。

使用using语句,会自动调用Dispose方法。在 Dispose 实现中,Close 被调用。这就是它的工作原理。

关于c# - BinaryWriter 不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60408376/

相关文章:

c++ - 将文本写入二进制文件 - 有什么区别?

git - 使用 Git 管理大型二进制文件

c++ - 过去某个时间点无法读取二进制文件

c# - 压缩和解压缩文件和文件夹

c# - 为什么 Visual Studio 在自动生成 Equals 时使用 EqualityComparer?

io - 为什么在这个 D 示例中到达 EOF 之前有一个额外的循环?

java - 它们是完全相同的方法,但一种有效,另一种无效

c# PDF 中的高分辨率图像

c# - 在互操作(C++ 管理)项目中使用 C# dll(使用 Microsoft.bcl 构建)

java - 为什么FileReader没有flush,而FileWriter有呢?