c# FileStream和StreamWriter用法

FielStream類操作的是字節和節節數組,而stream類操作的是字符數據。字符數據易於使用,但是有些操作,比如隨機文件訪問(訪問文件中間某點的數據),就必須由FileStream對象執行。
             FielStream類維護內部文件指針,該指針指向文件中進行下一次讀寫操作的位置。
             FileStream只能處理原始字節(raw byte),處理原去吧字節的功能使用FileStream類可以用於處理任何數據文件。
             通過讀取字節數據,FileStream對像可以用於讀取圖像和聲音。代價是FileStream類不能將數據直接讀入字符串
             此指針可以修改用Seek方法,它有兩個參數:
             第一個參數:規定文件指針以字節為參數的移動距離
             第二個參數:規定開始計算的起始位置

        byte [] byDataValue  =   new   byte [ 200 ];
        
char [] charDataValue  =   new   char [ 200 ];

        
///   <summary>
        
///  FilesStream讀取用法
        
///   </summary>
         private   void  FilesStreamReadFile()
        {
            
try
            {
                FileStream fsFile 
=   new  FileStream( @" d:/log.cs " , FileMode.Open);
                
// 文件指針移到文件的135個字節
                fsFile.Seek( 135 , SeekOrigin.Begin);
                
// 將接下來的字節讀到Array中
                fsFile.Read(byDataValue,  0 200 );
            }
            
catch  (Exception e)
            {
                
throw  e;
            }
            
// 將字節轉換成字符
            Decoder dc  =  Encoding.UTF8.GetDecoder();
            
// 字節數組轉換成字符數組,便於顯示
            dc.GetChars(byDataValue,  0 , byDataValue.Length, charDataValue,  0 );

        }

         ///   <summary>
        
///  FilesStream寫入用法
        
///   </summary>
         private   void  FileStreamWriteFile()
        {
            FileStream fsFile 
=   new  FileStream( @" D:/log.txt " , FileMode.Create);
            charDataValue
= " This is test string " .ToCharArray();
            byDataValue
= new   byte [charDataValue.Length];

            
// 將字符數組轉換成字節數組
            Encoder ec = Encoding.UTF8.GetEncoder();
            ec.GetBytes(charDataValue,
0 ,charDataValue.Length,byDataValue, 0 , true );

            
// 將指針設定起始位置
            fsFile.Seek( 0 ,SeekOrigin.Begin);
            
// 寫入文件
            fsFile.Write(byDataValue, 0 ,byDataValue.Length);
        }

    FileStream對象通常會在StreamWriter或StreamReader內使用,並使用它們的方法處理文件。
         ///   <summary>
        
///  StreamWriter寫入方法
        
///   </summary>
         private   void  StreamWriterMetod()
        {
            
try
            {
                FileStream fsFile 
=   new  FileStream( @" d:/log.txt " ,FileMode.OpenOrCreate);
                StreamWriter swWriter 
=   new  StreamWriter(fsFile);
                
// 寫入數據
                swWriter.WriteLine( " Hello Wrold. " );
                swWriter.WriteLine(
" It is now {0} " , DateTime.Now.ToLongDateString());    
                swWriter.Close();
            }
            
catch  (Exception e)
            {

                
throw  e;
            }
        }


         ///   <summary>
        
///  StreamWriter讀取方法
        
///   </summary>
         private   void  StreamReaderMetod()
        {
            
string  sLine  =   "" ;
            
try
            {
                FileStream fsFile 
=   new  FileStream( @" d:/log.txt " , FileMode.Open);
                StreamReader srReader 
=   new  StreamReader(fsFile);
                
// 讀取文件(讀取大文件時,最好不要用此方法)
                sLine  =  srReader.ReadToEnd();
                txbValue.Text 
=  sLine;
                srReader.Close();
            }
            
catch  (Exception e)
            {
                
throw  e;
            } 
        }

         ///   <summary>
        
///  StreamWriter讀取方法2
        
///   </summary>
         private   void  StreamReaderMetodTwo()
        {
            
try
            {
                FileStream fsFile 
=   new  FileStream( @" d:/log.txt " , FileMode.Open);

                
/*
                 * 讀取數據最簡單的方法是Read()。此方法將流的下一個字符作為正整數值返回,
                 * 如果達到了流的結尾處,則返回-1。
                 
*/
                StreamReader srReader 
=   new  StreamReader(fsFile);
                
int  iChar;
                iChar 
=  srReader.Read();
                
while  (iChar  !=   - 1 )
                {
                    txbValue.Text 
+=  (Convert.ToChar(iChar));
                    iChar 
=  srReader.Read();
                }
                srReader.Close();
            }
            
catch  (Exception e)
            {
                
throw  e;
            }
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值