C#文件读取,FileSteam和BinaryWriter/Reader的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#文件读取,FileSteam和BinaryWriter/Reader的使用相关的知识,希望对你有一定的参考价值。

突然要求做一个CyUSB的上位机程序,对例程有一点疑问。例如要传输一个文件,定义了一个FlieStream myFlie,BinaryWriter sw,最后使用sw.Writer()。这个具体应该怎么理解呢?

参考技术A BinaryWriter是对FlieStream对象的高层次封装。可以更简洁代码的写入二进制数据到文件。就像StringWriter写入字符串到文件的代码肯定要比利用FlieStream写入数据到文件要简洁易读得u多

c#二进制文件的写入和读取

c#二进制文件的写入和读取,参考代码如下:

using System; 
using System.IO; 

public class FileApp 
 
    public static void Main() 
     
        // 在当前目录创建一个文件myfile.txt,对该文件具有读写权限 
        FileStream fsMyfile = new FileStream("myfile.txt" , FileMode.Create, FileAccess.ReadWrite); 

        // 创建一个数据流写入器,和打开的文件关联 
        StreamWriter swMyfile = new StreamWriter(fsMyfile); 

        // 以文本方式写一个文件 
        swMyfile.WriteLine("Hello, World"); 
        swMyfile.WriteLine("abcdefghijklmnopqrstuvwxyz"); 
        swMyfile.WriteLine("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 
        swMyfile.WriteLine("0123456789"); 

        // 冲刷数据(把数据真正写到文件中去) 
        // 注释该句试试看,程序将报错 
        swMyfile.Flush(); 

        // 以文本方式读文件 
        // 创建一个数据流读入器,和打开的文件关联 
        StreamReader srMyfile= new StreamReader(fsMyfile); 

        // 把文件指针重新定位到文件的开始 
        srMyfile.BaseStream.Seek(0, SeekOrigin.Begin); 

        // 打印提示信息 
        Console.WriteLine("****************以文本方式读文件*********************"); 

        // 打印文件文本内容 
        string s1; 
        while((s1 = srMyfile.ReadLine())!=null) 
         
            Console.WriteLine(s1); 
         
        Console.WriteLine(); 
        // 以文本方式读文件结束 


        // 以二进制方式读文件 
        // 创建一个二进制数据流读入器,和打开的文件关联 
        BinaryReader brMyfile= new BinaryReader (fsMyfile); 

        // 把文件指针重新定位到文件的开始 
        brMyfile.BaseStream.Seek(0, SeekOrigin.Begin); 

        // 打印提示信息 
        Console.WriteLine("****************以二进制方式读文件*********************"); 

        // 打印文件文本内容 
        Byte b1; 
        while(brMyfile.PeekChar()>-1) 
         
            b1=brMyfile.ReadByte(); 
            // 13为"\\n",表示回车;10为"\\r",表示换行 
            if(b1 != 13 && b1 != 10) 
             
                Console.Write("0",b1.ToString()); 
                Console.Write("."); 
             
            else 
             
                Console.WriteLine(); 
             
         
        Console.WriteLine("\\n"); 
        // 以二进制方式读文件结束 

        // 关闭以上new的各个对象 
        brMyfile.Close(); 
        srMyfile.Close(); 
        fsMyfile.Close(); 

        // 读取文件属性 
        // 打印提示信息 
        Console.WriteLine("****************读取文件属性*********************"); 

        FileInfo fiMyfile=new FileInfo("myfile.txt"); 
        Console.WriteLine("文件名 : 0",fiMyfile.Name); 
        Console.WriteLine("文件名(含路径) : 0",fiMyfile.FullName); 
        Console.WriteLine("文件大小(bytes) : 0",fiMyfile.Length); 
        Console.WriteLine("文件创建时间 : 0",fiMyfile.CreationTime); 
     
参考技术A 2进制写法有很多种
用普通的文件流就可以了
只是参数要用byte转换下。
也许C#也有专门的比特方式的重载。
试试吧,中文很简单的。本回答被提问者和网友采纳
参考技术B 用BinaryReader读取就行了,但文件的结构你要知道,一次读多少,开始位置和结束位置,转成你想要的东西,不然的话就是读出来了,也是毫无意思的数字. 参考技术C 路过

以上是关于C#文件读取,FileSteam和BinaryWriter/Reader的使用的主要内容,如果未能解决你的问题,请参考以下文章

c#二进制文件的写入和读取

统一读取和解析 C# 中的 Json 文件

如何在 C# 中读取和解析 XML 文件?

如何有效的使用C#读取文件

WPF C#怎么批量读取和创建文件(类似txt文件)

C# 中的 Stream Empty 读取和上传 Excel 文件