前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >16位流应用与代码统计器例题

16位流应用与代码统计器例题

作者头像
端碗吹水
发布2020-09-23 10:39:07
3490
发布2020-09-23 10:39:07
举报
文章被收录于专栏:程序猿的大杂烩

16位流应用:

使用PrintStream进行打印并且输出到控制台以及文本上,每次的输出要带有一个格式为:yyyy-MM-dd  HH:mm:ss 的时间。

首先写一个类继承于PrintStream,然后重写print和println方法,再替换一下系统的out输出通道。

代码示例:

bbf0524b7d59eccbb889322617b90386.png
bbf0524b7d59eccbb889322617b90386.png
1d5f4b43433c866b1e5abd1aecba4590.png
1d5f4b43433c866b1e5abd1aecba4590.png
ce3c0320053442683ed344514df1b3a8.png
ce3c0320053442683ed344514df1b3a8.png

接着写一个测试类查看实现效果:

代码示例:

d6122dd04f0f77b771f0a250f1742e33.png
d6122dd04f0f77b771f0a250f1742e33.png

运行效果:

控制台:

a1fce44849aef7ee4af8cf96904c1041.png
a1fce44849aef7ee4af8cf96904c1041.png

文本:

1458a7ddf8cc95b8c12ac54782aa1e0b.png
1458a7ddf8cc95b8c12ac54782aa1e0b.png

FileReader/FileWriter流:

FileReader是16位流的文件读取流,里面的方法和8位流基本是一样的,一样的读取方法,有单个字符读取,批量读取和控制范围读取,skip跳过字符方法也有,其实在16流里就是把概念从字节换成了字符而已。

代码示例:

edca1ce1a8a0905c5a19365fd5e6e1c2.png
edca1ce1a8a0905c5a19365fd5e6e1c2.png

运行结果:

812b33ca144c7e65995ded0e4067c789.png
812b33ca144c7e65995ded0e4067c789.png

FileWriter是16位流里的输出流,里面的方法也是和8位流基本是一样的,也是有单个输出,批量和控制范围输出。所以基本16位流也不需要过多赘述,只要8位流掌握了,16位流只要写几遍基本也就掌握了。

代码示例:

55cabcf855fcb070b9f38ffc417a0d85.png
55cabcf855fcb070b9f38ffc417a0d85.png

运行结果:

9c7ab79caee791dc3edb8d6520f6bd45.png
9c7ab79caee791dc3edb8d6520f6bd45.png

BufferedReader/BufferedWriter流:

一目了然的缓存流,缓存池也是默认为8k,也可以在构造器中更改缓存的大小。16位流的缓存流倒是有个亮点,在16位流里的读取缓存流有个readLine方法可以一行行的读取,读到没有值就会返回一个null。

代码示例:

d1470aff2b2c6592ee6d273f2f4d4045.png
d1470aff2b2c6592ee6d273f2f4d4045.png

运行结果:

1ad1c356bd2e358699a9e87b5b96d4e2.png
1ad1c356bd2e358699a9e87b5b96d4e2.png

InputStreamReader/OutputStreamWriter流:

InputStreamReader流可以将8位流转换成16位流读取,并且可以在构造器里更改字符集,例如可以更改成UTF-8、GB2312等字符集,但是需要注意的是设置的字符集要与文本里的字符集一致,不然读取出来的就是乱码一般的文字。

OutputStreamWriter流可以将16位流转换成8位流输出,同样的可以在构造器中更改字符集,同样要注意的是如果你输出的文本不支持你设置的字符集的话,输出到文本上的内容也是乱码一般的字符。

代码示例:

4ed029e03896fbd98c1fc1fedc20eadc.png
4ed029e03896fbd98c1fc1fedc20eadc.png

运行结果:因为Eclipse的文本默认是GBK字符集,所以显示不会出现问题:

c4f6e0706fd149707136cdbaa97e60bf.png
c4f6e0706fd149707136cdbaa97e60bf.png

制作一个代码统计器:

要完成这个代码统计器需要三个类:1.统计代码行数类 2.搜索后缀为.java文件的搜索类  3.测试类,首先完成统计代码行数类,然后是文件搜索类,最后是实现类。

1. 统计代码行数类:

458b87c9e1b2eda8420e85d0b1f27b37.png
458b87c9e1b2eda8420e85d0b1f27b37.png
a5a107a43d1590d865eb7680c1d704df.png
a5a107a43d1590d865eb7680c1d704df.png

2.搜索后缀为.java文件的搜索类:

  这个类使用递归查找就可以完成:

8163b098ba7a1d39c0effdecd8ce38d0.png
8163b098ba7a1d39c0effdecd8ce38d0.png

3.测试类:

测试类基本就是最简单了,调用完搜索类的方法后就打印countLine和fileCount属性就可以了:

720fa4f8bfc69963df46e814bc3b43e3.png
720fa4f8bfc69963df46e814bc3b43e3.png

运行结果:

940a0c8d38274702e2d2231c7b69172a.png
940a0c8d38274702e2d2231c7b69172a.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/10/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档