C#流

FileStream文件流:
功能:读写文件
StreamReader类——读文本文件
StreamWriter类——写文本文件
sw/write
BInaryReader类——读二进制文本
br.Readint/br.Readchar/Br.readchars()以一定的长度读取
BinaryWriter类——写二进制文本
bw.Write(content,encode)
使用
peekchar/write/
readString /ReadInt32()/ReadChar();读取特定的二进制字节,并移动当前流
注:读取文件也可以采用File.ReadAllText(Path)

  • 读取文件进度的实现
  long length = binaryReader.BaseStream.Length;//流的总长
            int percent;           //百分比
            while (binaryReader.PeekChar() !=-1)//查看下一个字符,没有返回-1
            {
                long cur = binaryReader.BaseStream.Position;      //流的当前位置                            
                percent = (int)((cur*1.0 / length)*100);                   //算百分比
                Console.WriteLine("文件传输" + percent.ToString() + "%");      输出百分比          
            }
  • 涉及方法

1,BinaryReader.SeekChar();返回为int,判断下一个字节,没有返回-1
2,BInaryReader.BaseStream.length:流的长度
3,BInaryReder.BaseStream.Position 流当前的位置

  • 报错:

1输出字符缓冲区太小,无法包含解码后的字符
原因:在创建BinaryReader时制定编码,默认为-8。判断条件SeekChar初溢出,可以采用position<length来判断。
2,(int)long/long,结果一直为0,
原因:long也是整型,让一个成为double即可

  • Stream读写文件的编码
    背景:数据以一定的编码,保存到文本,读取时需要按照其特定编码才可以读取
    属性;Encoding .GetEncoding(“编码”):utf-8,等等,出现乱码,即为编码解析不正确
   Console.WriteLine(File.ReadAllText(@"F:\桌面\读取数据测试用例\Unicode.txt"));
            Console.WriteLine(File.ReadAllText(@"F:\桌面\读取数据测试用例\uft-8.txt"));
            Console.WriteLine(File.ReadAllText(@"F:\桌面\读取数据测试用例\Unicode big endian.txt"));
            Console.WriteLine(File.ReadAllText(@"F:\桌面\读取数据测试用例\TestCoding.txt",Encoding.GetEncoding("GB18030")));            

注:同样的文本信息,可以对其进行不同的编码。注意编码的方式

NetStream
作用:可以发送到另一台PC,也有读写的方式

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值