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

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

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);
            
if (br.PeekChar() != -1)
            {
                
string str = br.ReadString();
                
bool bol = br.ReadBoolean();
                
                Console.WriteLine(str);
                Console.WriteLine(bol.ToString());
                
            }
        }
    }
}


 

 

posted @ 2010-10-17 19:01  草珊瑚  阅读(781)  评论(0编辑  收藏  举报