A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© guoguo 中级黑马   /  2013-11-28 16:23  /  1187 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 guoguo 于 2013-11-28 18:34 编辑

我在visual studio 建了一个简单的控制台程序,在d:\我的文档\Visual Studio 2005\Projects\test\01\bin\Debug根目录下建立了一个test.txt文档,用的是相对路径,
编写了一下代码:可是显示插入成功,但是打开文档并没有数据,但是第二种代码就插入进去了数据,问一下,有什么区别,另外,第一种怎样改动,才能正常插入数据?而且,虽然第二种方式插入了一行数据,可是当下次改动是,显示的是新插入的信息,以前的信息就会不见了???

第一种代码:using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace _1
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "我的第一行文字";
            FileStream filestream = File.OpenWrite("test.txt");
            StreamWriter sw = new StreamWriter(filestream);
            sw.WriteLine(text);
            Console.WriteLine("插入成功");
            Console.ReadKey();
                  }
    }
}


第二种实现代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace _1
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "我的第一行字符";
            FileStream filestream = new FileStream("test.txt", FileMode.OpenOrCreate);
            StreamWriter sw = new StreamWriter(filestream);
            sw.WriteLine(text);
            Console.WriteLine("插入成功");
            sw.Close();
            Console.ReadKey();
        }
    }
}


评分

参与人数 1技术分 +1 收起 理由
V_John + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
这是因为当程序没有退出时,执行写入操作,程序会把要写入的内容放入缓冲区内,攒到一定程度集中写入,当想要立即把文件写入,执行flush()方法,清除缓冲区,程序会立即缓冲区内的文件写入,在释放。close()方法也会执行flush()。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1 赞一个!

查看全部评分

回复 使用道具 举报
哦,我明白了,第一种没有调用close()或者flush()方法,相当于没有执行数据插入,可是,我还是不明白,没什么再下次插入新数据之前文档中的旧数据不见了?????
回复 使用道具 举报
你调用的构造函数的问题
StreamWriter(Stream) 用 UTF-8 编码及默认缓冲区大小,为指定的流初始化 StreamWriter 类的一个新实例。一个参数应该默认是覆盖文本的
回复 使用道具 举报
我明白了,感谢你的答案!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马