• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

c#FileStream和StreamWriter用法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
             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, 0200);
            }
            
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;
            }
        }

注:FileMode枚舉成員值在文件存在與不存在時的情況

成員

文件存在時

文件不存在時

Append

打開文件,流指向文件的末尾,只能與枚舉FileAcess.Write聯合使用

創建一個新文件。只能與枚舉FileAcess.Write聯合使用

Create

刪除該文件,然後創建新文件

創建新文件

CreateNew

拋出異常

創建新文件

Open

打開現有文件,流指向文件開頭

拋出異常

OpenOrCreate

打開文件,流指向文件開頭

創建新文件

Truhncate

打開現有文件,清除其內容。流指向文件開頭,保留文件的初始創建日期。

拋出異常




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#事件の事件聚合器发布时间:2022-07-10
下一篇:
C#通过SendMessage获取浏览器地址栏的地址发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap