黑马程序员技术交流社区

标题: FileStream 和StreamRead的区别 [打印本页]

作者: u010209195    时间: 2014-2-12 20:56
标题: FileStream 和StreamRead的区别
FileStream 和StreamRead的区别  ???
最好有简单代码注释一下
作者: 涵风    时间: 2014-2-13 11:19
#region
            FileStream fs;
            //读取文件所在路径
            string filePath = "c:\\file1.txt";
          //打开文件
            try
            {
                fs = new FileStream(filePath,FileMode.Open);
            }
            catch
            {

                Console.WriteLine("文件打开失败");
                return;
            }
            //尚未读取的文件内容长度
            long left = fs.Length;
            //存储读取结果
            byte[] bytes=new byte[100];
            //每次读取长度
            int length = bytes.Length;
            //读取位置
            int start = 0;
            //实际返回结果长度
            int num = 0;
            //当文件为读取长度大于0时,不断进行读取
            while (left>0)
            {
                fs.Position = start;
                num = 0;
                if (left < maxLength)
                {
                    num = fs.Read(bytes, 0, Convert.ToInt32(left));
                }
                else
                {
                    num = fs.Read(bytes,0,maxLength);
                }
                if (num==0)
                {
                    break;
                }
                start += num;
                left -= num;
                Console.WriteLine(Encoding.UTF8.GetString(bytes));
            }
            Console.WriteLine("end of file");
            Console.ReadLine();
            fs.Close();
            #endregion
作者: 涵风    时间: 2014-2-13 11:33
StreamReader1、利用流对象创建StreamReader对象。
文件流:
FileStream fs=new FileStream(filePath,FileMode.Open,FileAccess.ReadWrite);
StreamReader sr=new StreamReader(fs);//对文件流封装
2、StreamReader(String path).如果需要处理的是文件流,则可以根据文件路径创建一个以UTF8编码的StreamReader对象。例如:
StreamReader sr=new StreamReader(c://file1.txt);
与该方法等价的有File及FileInfo类提供的OpenText方法。例如:
StreamReader sr=File.OpenText("c:\\file1.txt");
默认情况下,StreamReader采用UTF8编码形式,仅可读取UTF8格式的文件,如果读取其他格式的文件,必须指定采用的编码。例如:
StreamReader sr=new StreamReader(@"c:\\file1.txt",Encoding.Default);
作者: squilla    时间: 2014-2-13 16:21
FileStream:是以文件流的形式读写,可适用于所有类型的文件;
StreamRead:也可以读写文件,读写文本文件;

【FileStream以流的形式读写】
static void Main(string[] args)
{
using (FileStream fssource = new FileStream(@"path1", FileMode.Open, FileAccess.Read))
{
using (FileStream fsout = new FileStream(@"path2", FileMode.Create, FileAccess.Write))
{
byte[] bt = new byte[1024 * 1024 * 10];
int res = 0;
while ((res = fssource.Read(bt, 0, bt.Length)) > 0)
{
fsout.Write(bt, 0, res);
}
}
}
}

【StreamReader两种读取方式】:
StreamReader sr = new StreamReader("test.txt", Encoding.Default);
while (!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
Console.WriteLine("-----------------");
StreamReader sr1 = new StreamReader("test.txt", Encoding.Default);
string mys=string.Empty;
while ((mys=sr1.ReadLine()) != null)
{
Console.WriteLine(mys);
}
Console.ReadKey();




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2