`
luckyjaky
  • 浏览: 116138 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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;
            }
        }



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

成員

文件存在時

文件不存在時

Append

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

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

Create

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

創建新文件

CreateNew

拋出異常

創建新文件

Open

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

拋出異常

OpenOrCreate

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

創建新文件

Truhncate

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

拋出異常

 

 

分享到:
评论

相关推荐

    C# FileStream文件读写详解

    这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机...

    unity File,FileInfo,FileStream,StreamReader ,StreamWriter 区别

    在 Unity 中,File、FileInfo、FileStream、StreamReader 和 StreamWriter 是五个不同的类别,各自提供了一些方法来实现文件操作。但是,它们之间存在着紧密的联系。FileInfo 类可以用于获取文件的信息,而 ...

    C# FileStream 数据读写文本

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出以下关于C#中使用`...综上所述,`FileStream`是C#中处理文件读写的重要工具之一,通过合理的使用和适当的异常处理,能够有效地满足文件操作的需求。

    C#使用FileStream对象读写文件

    在项目开发中经常会涉及到对文件的读写,c# 提供了很多种方式来对文件...创建FileStream 对象有许多不同的方法,这里使用文件名和FileMode枚举值创建: 一、 读取文件,记得引用 System.IO 命名空间: using System;

    C#写入文件加上bom头,主要适用于utf8文件

    在C#中,我们通常使用`System.IO.StreamWriter`类来写入文本文件。默认情况下,`StreamWriter`创建的UTF-8文件不会包含BOM头。但是,如果我们需要添加BOM,可以设置`StreamWriter`的构造函数中的一个参数。下面将...

    streamWriter写入文件

    通过使用`StreamWriter`,开发人员可以轻松地将字符串或字符数组写入到文件中,这对于日志记录、数据存储和其他文件操作任务极为有用。 ### 标题理解:“streamWriter写入文件” 标题直接点明了主题,即使用`...

    C#通过流写入数据到文件的方法

    在C#编程中,文件操作是一项基础且重要的任务。流(Stream)是.NET Framework...了解并熟练掌握流的概念和使用方法,对于提升C#编程能力至关重要。通过结合不同的流类型和方法,可以构建出满足各种需求的文件读写功能。

    C#里的文件流(FileStream)

    在C#编程中,文件流...总之,C#中的FileStream是处理文件I/O操作的重要工具,通过熟练掌握其使用方法和相关类,开发者可以高效地完成文件的读写任务。了解和理解这些基础知识对于任何C#开发者来说都是至关重要的。

    C#入门代码 (适合C#初学者)

    在C#中,我们可以使用FileStream和StreamWriter类来写入文件。在下面的代码中,我们使用FileStream类打开文件,并使用StreamWriter类写入文件的内容。我们使用SeekOrigin.End枚举值将文件指针移到文件结尾,然后使用...

    C#源代码-FileStream文件流的操作.zip

    FileStream默认处理二进制数据,若处理文本,可以结合StreamReader或StreamWriter类使用。 综上所述,"C#源代码-FileStream文件流的操作.zip"中的代码示例应该详细展示了如何利用FileStream类在C#中进行文件操作,...

    C#用stream写文件

    总的来说,C#中的`Stream`类和其派生类如`FileStream`、`StreamWriter`为开发者提供了强大的文件操作能力,使得在处理TXT文件写入时变得简单高效。通过熟练掌握这些类和方法,你可以轻松地进行各种复杂的文件操作...

    C# 打开并附加到日志文件

    以下是使用System.IO.FileStream和StreamWriter来打开并附加到现有日志文件的基本步骤: 1. **打开文件流**: 使用FileStream类的`Append`模式来打开一个文件,这意味着如果文件已经存在,将会在文件末尾追加内容...

    C#实现将日志写入文本文件的方法

    例如,`FileStream`和`StreamWriter`是用于读写文件的关键类,而`Directory`和`File`则用于处理目录和文件的基本操作。 ```csharp using System.IO; ``` 接下来,定义一个静态方法`WriteLog`,接收一个字符串参数`...

    两种方法实现C#读写文件

    5. **关闭流**:使用`Close()`方法关闭`StreamWriter`和`FileStream`,释放资源。 #### 方法二:使用File类的AppendAllText方法 如果只是简单地追加文本到文件中,可以考虑使用`System.IO.File`类中的`...

    C#文件流的使用

    通过学习如何创建和使用`FileStream`、`StreamReader`和`StreamWriter`,以及处理异步操作和异常,你将能够轻松地实现文件的导入、导出和其他复杂的数据处理任务。在实际项目中,这些技能是必不可少的。

    C#知识类库使用方法

    本文将深入探讨C#中的类库及其使用方法,覆盖从基础到高级的应用场景。 首先,IDE(集成开发环境)是编程的基础,如Visual Studio,它集成了对C#的强大支持。在IDE中,你可以创建项目、编写代码、调试和部署应用...

    C# 实现简易记事本

    例如,"新建"可以清空richtextbox的文本,"打开"和"保存"需要使用System.IO命名空间中的FileStream和StreamWriter类来处理文件的读写。"复制"和"粘贴"则涉及到剪贴板操作,可以使用Clipboard类来实现。 在处理"打开...

    C#源码大全 C#C#C#C#C#C#C#C#C#

    9. **字符串操作**:C#中的String类是不可变的,提供了丰富的字符串处理方法,如Split、Join、Replace、Substring等,同时Regex类支持正则表达式操作,用于复杂文本匹配和替换。 这些知识点构成了C#编程的基础,...

    C#读取大文本文件(4G)并将其批量写入数据库(每次100万条).zip

    在C#中,`System.IO`命名空间提供了许多类用于文件操作,如`FileStream`用于读写文件,`StreamReader`和`StreamWriter`用于文本文件的读写。对于大文件,我们通常不一次性加载到内存,而是使用流式读取,这样可以...

Global site tag (gtag.js) - Google Analytics