• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#文件流的使用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

(2012-07-27 19:42:23)

1.C#文件流使用前要加上using System.IO;
2.在Unity3D中,调试阶段的写入文件的默认路径是项目文件夹下。
             发布后的写入文件默认路径是exe文件的同级目录。
无论是调试还是发布(尤其是发布)时,一定要注意把该读取的文件放在特定目录,否则出错。
3.对于手动写好的一些txt文件,无论是作为之后读取还是写入用途(尤其是要经常进行附加写入用途),都要先安排好最后一行的转行符,防止出错。
 
TextWriter 是 StreamWriter 和 StringWriter 的抽象基类,它们将字符分别写入流和字符串。创建一个 TextWriter 实例,将对象写入字符串,或将字符串写入文件,或序列化 XML。
1.测试文件是否存在:(在读取文件前使用,从而既可以避免失败读取,也可以依此输出错误,便于调试排错)
      if(File.Exists("bg.txt"))   //默认路径应该和读取,写入的默认路径相同
2.读取文件范例:
        using (TextReader reader = new StreamReader("bg.txt"))
        {
            t = 0;        string mapstr = string.Empty;
            while (reader.Peek() != -1 && t < 20)  //当为-1时已经到文件尾
            {
                mapstr = reader.ReadLine().ToString();
                setmap(mapstr, t);
                t++;
            }
            reader.Close();   
        }
①读取不存在的文件时,会出错,包括using以内以及using以后的代码不会被执行。
②当读取已存在的空文件时reader.Peek()第一次执行不会出错且返回-1。
③统计行数时,读完最后一行带字符的字符串后,无论此行有没有带转行符,reader.Peek()函数都是返回-1的,不必担心出问题。(注意,若“最后一行”包括转行符,且转行符之后还有空格键或Tab这类不可见字符,函数不会返回-1,程序会继续读数据)
④reader.ReadLine().ToString();返回的字符串不含有转行符(和WriteLine不同),因此将返回字符串写回给另一个文本文件时,Write方式不含转行符,WriteLine方式最后结果仅含一个转行符。
 
④猜测:TextReader reader = new TextReader("bg.txt")不可用由于TextReader是抽象类,
StreamReader reader = new StreamReader("bg.txt"))不用是由于需要禁止使用TextReader以外StreamReader扩展的功能。
 
3.保存文本范例:
        using (TextWriter writer = new StreamWriter("bg.txt"))
        {    //非默认路径貌似要加@,如@"c:\temp\MyTest.txt";",不知道有什么用
            writer.WriteLine("Hello World");   //写一行字符串并伴随结束符
            writer.Close();   
        }
注意无论是writer.WriteLine()还是writer.Write(),都是覆盖式写入,会清洗原位置文本全部内容再写。
 
4.追加文本范例:(使用File.AppendText前不需去打开文件,此步骤包含打开文件)
        using (StreamWriter w = File.AppendText("log.txt"))
        {   
            w.WriteLine("ggg"); //此时的Write和WriteLine函数自动会把写入的字符串放在最后
            // Close the writer and underlying file.
            w.Close();
        }
①不会清洗原文本内容,可以实现文本末尾追加内容。
②追加文本方式和正常写入文本方式一样,当文本不存在时会自动新建文本。
②猜测File类中或许有类似File.AppendText()这种函数,可以返回非全覆盖式写入的StreamWriter。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
VisualStudio2005C#读写Excel文件发布时间:2022-07-10
下一篇:
C#中的相对路径在Picturebox中的应用发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap