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

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

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

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

流支持的操作:

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

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

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

 

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

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

 

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

描述,判断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流>定位和读取/写入字节数组到文件流中

编码实现>文件和输入输出>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

编码实现>文件和输入输出>Stream流 创建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写入文本

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

编码实现>文件和输入输出>Stream流 使用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

 

>读取字符到指定变量

编码实现>文件和输入输出>Stream流 读取字符到指定变量
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提供用二进制形式把基元类型写入流,可指定特定编码。常用例子,图片。

编码实现>文件和输入输出>Stream流 二进制流写入类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


编码实现>文件和输入输出>Stream流 二进制流读取类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());
                
            }
        }
    }
}


 

 

你可能感兴趣的:(Stream)