使用字符流,客户端读取文本文件发送至服务端

上一节我们学习了最简单的字节流 其中图片还有一些媒体文件存储方式都为字节的形式


image.png

上一节我们看到了(客户端正常的发送了字符串)字符流输出客户端内容会有占用字节的情况 那么如何处理这个问题呢?


image.png

其实老外已经在流输入输出的write方法里对字符流做了封装(通过字符编码表把字节转换成字符)
接下来看下字符流和字节流如何转化
image.png

image.png

上面这张图说明了字符流和字节流存在java.io这个包下面
下面代码演示下字符流
MyClient中代码修改如下


image.png

MyServer中代码修改如下
image.png

运行结果
先运行MyServer 在运行MyClient
image.png

image.png

可以看见MyClient很快的运行完了 而MyServer还没运行完
运行完MyClient再次看MyServer
结果如下
image.png

可以看见MyClient运行完毕了 但是结果却什么都没有
这是由于上面提到的缓冲区的问题


image.png

由于write方法里面的值没有达到缓冲区的值 没有进行发送 所以运行结果看不到内容
这时需要用到下面代码
image.png

MyServer修改总代码如下
image.png

运行结果
image.png

可以看见结果跟我们发送的内容不太一样,多了一个客字 这是因为我们是每3个字符一发送的
我们可以把发送字符数改大一些
如下
image.png

运行结果
image.png

接下来我们学习一个新类
来到OutputStreamWriter这个类的源码
image.png

通过注释可以看出每次执行write方法的时候都会对字码表进行转换 所以老外又做了个封装类BufferedWriter
接下来演示一下BufferedWritter的用法
MyServer里面
image.png

MyClient里面
image.png

同时将MyClient发送内容改为多行
image.png

运行结果


image.png

由于我们在开发时候不会再发送内容处写入多个\n来换行
这时我们可以用下面的方法
image.png

运行结果
image.png

image.png

为了演示 我们在资源文件夹下创建一个client.txt文件
image.png

1.首先先把文件读取出来
获取资源文件夹下面的文件方法
image.png

当前文件的class.getResouce(文件名) //从资源文件夹下读取文件
image.png

image.png

运行结果
image.png

思路为先得到字节流 转换成字符流
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,782评论 19 139
  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 3,142评论 3 10
  • 实时消息协议---流的分块 版权声明: 版权(c)2009 Adobe系统有限公司。全权所有。 摘要: 本备忘录描...
    一个人zy阅读 2,088评论 0 9
  • 你好
    大嵐阅读 194评论 0 0
  • RandomAccessFile Java提供的对文件内容的访问,既可以读文件也可以写文件,可以访问文件的任意位置...
    少冰三hun甜阅读 4,622评论 0 1

友情链接更多精彩内容