文件读取(filestream)

在stream中已经介绍过,文件读取应用filestream,其是以字节为单位读取文件的。在操作中,当应用filestream创建文件流,读取时应先定义一个字节数组,在转化成char类型,最后转化成string类型。我们其实可以通过streamreader/writer类来直接读取字符串。在此简单介绍一下,流的读取方式除了创建流类中自定义的read/write方法(通过byte类型进行),也可以通过其他读取类进行读取。streamreader/writer类,binaryread/write以及stringreader/writer均继承自textreader/writer抽象类,binaryreader/writer可以直接读取int,double,bool等数据类型,StreamReader/writer可直接读取字符串。

      本例以filestream建立文件流,并通过StreamReader/writer进行读写。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace FilestreamandStreamreader
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePathName = "E:\\test.txt";

            using (FileStream fs = new FileStream(filePathName, FileMode.Create, FileAccess.Write))
            {
                StreamWriter sw = new StreamWriter(fs);
                sw.Write("LIU");
                sw.WriteLine("Ljksdjfjk");
                sw.WriteLine("chengjisih");
                sw.Flush();
            }

            using (FileStream fs = new FileStream(filePathName, FileMode.Open, FileAccess.Read))
            {
                StreamReader sr = new StreamReader(fs);
                string str = sr.ReadToEnd();
                Console.WriteLine(str);
                fs.Position = 0;//每次重新调用时,fs位置归零
                Console.WriteLine(sr.ReadLine());

                //fs.Position = 0;
                //char[] chars = new char[10];
                //sr.Read(chars, 0, 10);
                //for (int i = 0; i < chars.Length; i++)
                //{
                //    Console.WriteLine(chars[i]);
                //}

                fs.Close();
                Console.ReadKey();
            }

        }
    }
}

streamreader其构造函数重载很多,可以满足不同的需求,只要是构造函数的入口参数为流都可以用它来读取,比如httpwebreponse等的返回值等,上例中

StreamReader sr = new StreamReader(fs)语句,入口参数可以直接为路径,也可以为
StreamReader sr = new StreamReader(File。Create(。。。。));继承自textreader/writer的三个派生类其实就是一个流的三种读取器,离开这三个类,用建立流对象的自身的write/read方法依旧可以。


以上为对流概念的基本理解
posted @ 2017-04-18 23:51  81192  阅读(761)  评论(0编辑  收藏  举报