文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>编码实现>文件和输入输出>Stream流

编码实现>文件和输入输出>Stream流

时间:2010-10-17  来源:草珊瑚

Stream流是一组连续存放的数据,具有开头和结尾,并且使用游标指示当前位置。

Stream流包含的数据可来自内存MemoryStream,文件FileStream,或TCP/IP套接字NetWorkStream。

流支持的操作:

读取,数据从Stream流传输到数据结构(字符串或字符节数组)中。

写入,数据从数据源传输到Stream流。

查找,查询和修改你在Stream流的位置。

 

编码实现>文件和输入输出>Stream流>创建一个文件流

描述,创建一个文件path,并指定文件模式FileMode,访问权限FileAccess,共享访问权限FileShare。

 

编码实现>文件和输入输出>Stream流>获取和设置文件流属性信息

描述,判断Stream流是否可读,可定为,可写。

创建一个文件流,获取和设置文件流属性信息 using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace FileStreamDemo1
{
    class Program
    {
        static void Main(string[] args)
        {
            const string FilePath=@"C:\MyData.dat";
            using (FileStream fs = new FileStream(FilePath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
            {
                Console.WriteLine("流是否支持可读{0}", fs.CanRead);
                Console.WriteLine("流是否支持可写{0}", fs.CanWrite);
                Console.WriteLine("流是否支持可查找{0}", fs.CanSeek);
                Console.WriteLine("流当前的位置在{0}", fs.Position);
                Console.WriteLine("流是否是异步方式打开{0}", fs.IsAsync);
                Console.WriteLine("流的长度为{0}", fs.Length);
                fs.SetLength(20);
                Console.WriteLine("流的新长度为{0}", fs.Length);
            }
            Console.ReadLine();
        }
    }
}


 

编码实现>文件和输入输出>Stream流>定位和读取/写入字节数组到文件流中

定位和读取/写入字节数组到文件流中 using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace FileStreamReadandwrite
{
    class Program
    {
        static void Main(string[] args)
        {
            //使用相对文件位置
            const string FilePath = "FileStreamDemo.dat";
           // 创建一个用于写入FileStream的随机数据
            byte[] DataArry = new byte[100000];
            new Random().NextBytes(DataArry);

            using (FileStream fs = new FileStream(FilePath, FileMode.Create,FileAccess.ReadWrite,FileShare.None))
            {
                  //逐字节的写入数据到FileStream
                for (int i = 0; i < DataArry.Length; i++)
                {
                    fs.WriteByte(DataArry[i]);
                }
                //从开头位置偏移0字节,即定位到文件流的开头位置
                fs.Seek(0, SeekOrigin.Begin);
                // 校验数据,使用ReadByte()逐字节的比较
                for (int i = 0; i < fs.Length; i++)
                {
                    if (DataArry[i] != fs.ReadByte())
                    {
                        Console.WriteLine("写入数据失败,数据内容不匹配!");
                        return;
                    }
                }
                Console.WriteLine("数据己经被写入 {0} 并且经过校对", fs.Name);
            }
            Console.ReadLine();
        }
    }
}


 

 

编码实现>文件和输入输出>Stream流>流写入类StreamWriter>创建StreamWriter实例

StreamWriter类专为写入字符或字符行而设计。继承于抽象类TextWrtier

创建StreamWriter实例 using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace sw
{
    class Program
    {
        static void Main(string[] args)
        {
           const string filePath=@"C:\StreamWriterDemo.txt";
            //使用Stream类来构造StreamWriter
           using (FileStream fs = File.Create(filePath))
           {
               using (StreamWriter sw = new StreamWriter(fs))
               {
                   sw.WriteLine("使用流类来构造StreamWriter!");
               }
           }
            //使用指定的文件路径来构造StreamWriter。
           using (StreamWriter sw2 = new StreamWriter(filePath))
           {
               sw2.WriteLine("使用指定的文件路径来构造StreamWriter");
           }          
        }
    }
}


 

编码实现>文件和输入输出>Stream流>流写入类StreamWriter>使用StreamWriter写入文本

描述:创建文本,写入文本。

使用StreamWriter写入文本 using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace swWrite
{
    class Program
    {
        static void Main(string[] args)
        {
            const string filePath = @"C:\StreamWriterDemo.txt";
            //使用Stream类来构造StreamWriter
            using (FileStream fs = File.Create(filePath))
            {
                using (StreamWriter sw = new StreamWriter(fs))
                {
                    sw.WriteLine("使用流类来构造StreamWriter!");
                    //写入一个布尔值;
                    sw.Write(true);
                    sw.Write(12);
                    sw.WriteLine('A');
                    sw.WriteLine(new string[2] { "StreamWriter", "StreamReader" });
                    sw.WriteLine("现在是时间是{0}", DateTime.Now.ToShortTimeString());
                    sw.WriteLine("你叫什么名字".ToCharArray());
                }
            }
        }
    }
}


编码实现>文件和输入输出>Stream流>流读取类StreamReader>创建StreamReader实例

StreamReader类用于读取字节数组或字符,包含单个字符,字符块,字符行或整个文件读入一个串变量。继承与TextReader

 

>读取字符到指定变量

读取字符到指定变量 using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace srReader
{
    class Program
    {
        static void Main(string[] args)
        {
            const string filePath = @"C:\StreamWriterDemo.txt";
            //通过使用FileStream打开一个文本流,可以进行更精细的文件打开控制。
            FileStream fs = File.Open(filePath, FileMode.OpenOrCreate);
            //从流中构造StreamReader类实例
            StreamReader sr = new StreamReader(fs,Encoding.Default);
            //
            while (!sr.EndOfStream)
            {
                Console.WriteLine(sr.ReadLine());
            }
            sr.Close();
            StreamReader sr2 = new StreamReader(filePath,Encoding.Default);
            Console.WriteLine("一次性读出所有的字符");
            Console.WriteLine(sr2.ReadToEnd());            
            Console.ReadLine();
        }
    }
}


编码实现>文件和输入输出>Stream流>二进制流写入类BinaryWriter

BinaryWriter提供用二进制形式把基元类型写入流,可指定特定编码。常用例子,图片。

二进制流写入类BinaryWriter using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace BinaryWriterDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            const string filePath=@"C:\BinaryWriter.dat";
            FileStream fs=new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.ReadWrite);
            //构造BinaryWriter
            BinaryWriter bw = new BinaryWriter(fs);
            //写入布尔值
            bw.Write(true);
            //写入字符串
            bw.Write("BinaryWriter");
            //写入整理值
            bw.Write(100);
            //调整流位直
            bw.Seek(0, SeekOrigin.End);
            //保存数据清空缓冲区
            bw.Flush();
            //关闭文件流。
            bw.Close();
         }
    }
}


编码实现>文件和输入输出>Stream流>二进制流读取类BinaryReader

二进制流读取类BinaryReader using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace BinaryReaderDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            const string filePath = @"C:\BinaryWriter.dat";
            FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            BinaryReader br = new BinaryReader(fs);
            while (br.PeekChar != -1)
            {
                string str = br.ReadString();
                bool bol = br.ReadBoolean();
                //下面的代码省略
            }
        }
    }
}


 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载