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

简介:

16位流应用:

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

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

代码示例:

bbf0524b7d59eccbb889322617b90386.png

1d5f4b43433c866b1e5abd1aecba4590.png

ce3c0320053442683ed344514df1b3a8.png



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

代码示例:

d6122dd04f0f77b771f0a250f1742e33.png


运行效果:

控制台:

a1fce44849aef7ee4af8cf96904c1041.png


文本:

1458a7ddf8cc95b8c12ac54782aa1e0b.png




FileReader/FileWriter流:

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

代码示例:

edca1ce1a8a0905c5a19365fd5e6e1c2.png


运行结果:

812b33ca144c7e65995ded0e4067c789.png




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

代码示例:

55cabcf855fcb070b9f38ffc417a0d85.png


运行结果:

9c7ab79caee791dc3edb8d6520f6bd45.png



BufferedReader/BufferedWriter流:

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

代码示例:

d1470aff2b2c6592ee6d273f2f4d4045.png


运行结果:

1ad1c356bd2e358699a9e87b5b96d4e2.png



InputStreamReader/OutputStreamWriter流:

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

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

代码示例:

4ed029e03896fbd98c1fc1fedc20eadc.png


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

c4f6e0706fd149707136cdbaa97e60bf.png




制作一个代码统计器:

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

1. 统计代码行数类:

458b87c9e1b2eda8420e85d0b1f27b37.png

a5a107a43d1590d865eb7680c1d704df.png



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

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

8163b098ba7a1d39c0effdecd8ce38d0.png



3.测试类:

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

720fa4f8bfc69963df46e814bc3b43e3.png


运行结果:

940a0c8d38274702e2d2231c7b69172a.png



本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1976629,如需转载请自行联系原作者

相关文章
|
9月前
|
Java C++
数的范围(考查二分)
数的范围(考查二分)
59 0
|
9月前
|
C语言
c语言编程练习题:7-33 统计素数并求和
c语言编程练习题:7-33 统计素数并求和
59 0
|
6月前
|
存储 算法
读《趣学算法》:重开算法之门,神奇的兔子数列(斐波那契数列)
本文通过《趣学算法》中的斐波那契数列问题,探讨了算法的递归实现、时间复杂度分析,并展示了如何通过迭代和优化存储空间来改进算法,最终将时间复杂度从指数级降低到线性级,并将空间复杂度从线性级降低到常数级。
119 0
读《趣学算法》:重开算法之门,神奇的兔子数列(斐波那契数列)
|
7月前
【洛谷】P1102 A-B 数对
洛谷 P1102 A-B 数对
65 0
【洛谷】P1102 A-B 数对
|
8月前
|
人工智能 算法 BI
【洛谷 P1803】凌乱的yyy _ 线段覆盖 题解(贪心算法+结构体排序)
**线段覆盖问题**: YYY 想在 NOIP 前参加最多比赛。给定 $n$ 场比赛的开始和结束时间,每场比赛必须连续且不能冲突。输入包含每场比赛的时间段,输出最多可参加的比赛数。$20\%$ 数据 $n\leq10$,$50\%$ 数据 $n\leq10^3$,$100\%$ 数据 $n\leq10^6$。解决方案:按结束时间排序比赛,若当前比赛开始时间晚于上一个结束时间,则计数加一。样例输入:3 场比赛,输出:2。AC C++ 代码实现了此算法。
55 0
|
8月前
|
存储 C++
【洛谷 P1102】A-B 数对 题解(映射)
这是一个编程题目,要求计算给定正整数序列中满足 \( A - B = C \) 的数对个数。输入包含两行:正整数 \( N \) 和 \( C \),以及一串正整数。使用一个哈希映射记录每个数字出现的次数,然后遍历映射,如果找到 \( A = B + C \),则累加对应计数。样例输入输出为 \( N=4, C=1 \),数列为 \( 1 1 2 3 \),答案为 \( 3 \)。代码使用 C++ 实现,通过维护一个映射来存储数字频率并计算数对。
59 0
|
9月前
leetcode代码记录(两数之和
leetcode代码记录(两数之和
56 1
|
9月前
leetcode代码记录(有序数组的平方
leetcode代码记录(有序数组的平方
34 0
|
9月前
leetcode代码记录(有序数组两数之和
leetcode代码记录(有序数组两数之和
48 0
|
算法 测试技术 C#
一题三解(暴力、二分查找算法、单指针):鸡蛋掉落
一题三解(暴力、二分查找算法、单指针):鸡蛋掉落