题目:

  • 将电脑上的图片复制到IDEA的环境中

  • 将一篇文章通过流写入文本文件中,再获取文本,并统计每一个字和标点符号出现的次数

思路:

  1. 有点类似于爬虫。因为图片一般比较大,所以这里我们展开了为BufferStream类来提高效率。同样情况适合视频写入和读出

  1. 文本文字考虑在一开始的时候就开始统计字数,那么应该为InputStream的时候,因为文字和符号较多,采用map的形式,最后同样传导文本,进行统计字数:有相同的文字则直接ch+1,不同,则导入map开始ch=1。


packagef_io.b_byteStream;
importjava.io.*;//导入java.io包中的所有类
importjava.util.Scanner;//导入java.util包中的Scanner类
importjava.util.*;
public classStreamPratice {
//读取图片,考虑图片在计算机中存储形式为二进制文件,以字节流的形式来读取
public static voidtest01(){FileInputStream fis=null;FileOutputStream fos=null;
longtime1=System.currentTimeMillis();
//先从外面读取图片,用字节流的输入流,使用绝对路径
try{fis =newFileInputStream("myink.jpg");BufferedOutputStream bos=newBufferedOutputStream(fos);BufferedInputStream bis=newBufferedInputStream(fis);
//这里用bufferStream缓冲流更节约时间,有利于大流量到的视频或者图片下载
fos =newFileOutputStream("ink.jpg");
intlen;
while((len = fis.read()) != -1) {fos.write(len);}}catch(Exception e){e.printStackTrace();System.out.println("图片读取失败");}
finally{
try{fis.close();}catch(Exception e) {e.printStackTrace();System.out.println("读取关闭失败");}
try{fos.close();}catch(Exception e) {e.printStackTrace();System.out.println("写入关闭失败");}}
longtime2=System.currentTimeMillis();//这里可以测算时间,bufferStream更快
System.out.println("运行时间为:"+(time1-time2));}
//读取文本文件practice2
public static  voidtest02()throwsIOException {BufferedReader br =null;BufferedWriter bw =null;
try{Map<Character,Integer> map =newHashMap<>();br=newBufferedReader(newFileReader("C:\\Users\\ASUS\\Pictures\\20230227.txt"));
intc=0;
//br.read()方法读的是字符的ASCII码
while((c=br.read())!=-1){
charch=(char)c;
if(map.get(ch)==null){map.put(ch,1);//如果对应的字符个数为null,那就直接给该字符赋值1
}
else{
//如果个数已存在,那就直接得到它的个数再加1就可以了
map.put(ch,map.get(ch)+1);}}bw=newBufferedWriter(newFileWriter("wordcount.txt"));//写入wordcount.txt文档
Set<Map.Entry<Character,Integer>> entrySet =map.entrySet();//范式,这里文本包括了字符和整型
for(Map.Entry<Character,Integer> entry:entrySet){
switch(entry.getKey()){
case' ':bw.write("空格="+entry.getValue());
break;
case'\t':bw.write("tab键="+entry.getValue());
break;
case'\r':bw.write("回车键="+entry.getValue());
break;
case'\n':bw.write("换行键="+entry.getValue());
break;
//自己可统计更多的符号和特殊字
default:bw.write(entry.getKey()+"="+entry.getValue());
break;}bw.newLine();}}finally{
if(bw!=null) bw.close();
if(br!=null)br.close();}}
public static  voidmain(String[] args)throwsIOException {
test01();
test02();}
}

运行结果:

字节流和字符流的应用相关推荐

  1. Java学习总结:42(字节流和字符流)

    字节流与字符流 上一节我们学习了文件操作类File,但是File类虽然可以操作文件,但是却不能操作文件的内容.如果要进行文件内容的操作,就必须依靠流的概念来完成.流在实际中分为输入流和输出流两种,输入 ...

  2. Java IO 字节流与字符流 (三)

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  3. JavaIO操作(1)字节流和字符流-1

    3.2.字节流和字符流(核心) 使用File类执行的所有操作都是针对于文件本身,但是却没有针对于文件的内容,而要进行文件内容操作就需要通过Java之中提供的两组类完成: · 字节操作流(是在JDK 1 ...

  4. 字节流与字符流的区别(good!)

    字节流与字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了 ...

  5. 字节流与字符流基本操作

    在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,当程序需要将一些数据保存起来,就要使用输出流. java.io包中流的操作主要有字节流,字符流两大类,两大类都有输 ...

  6. 字节流和字符流复制文件内容实例

    字节流和字符流复制文件内容实例 字节流: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputS ...

  7. java.IO字节流和字符流详解

    IO流的分类 在学习字节流和字符流之前因该先学习IO流的分类,效果会更好 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物, 往内存中去,叫做输入(Input).或者叫做读(Rea ...

  8. 1.8 Java字节流和字符流的区别,如何区分输入流和输出流?

    Java字节流和字符流的区别 首先我们先大概总结一下前面学习的内容,可分为以下几点: 以 Stream 结尾都是字节流,Reader 和 Writer 结尾都是字符流. InputStream 是所有 ...

  9. 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...

    因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...

  10. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

最新文章

  1. python中csv模块读写文件
  2. gg oracle tjs 同步_配置Goldengate从Oracle到PostgreSQL的同步复制
  3. 设计模式之间的关联关系和对比
  4. 数字滤波器(六)--设计FIR滤波器
  5. 初一音乐计算机教学方案,人音版七年级音乐教案
  6. Delphi – 我的代码之简单五子棋
  7. Spring MVC学习总结(12)——Spring MVC集成Swagger时报错{schemaValidationMessages:[
  8. 惠普OMEN游戏本驱动曝内核级漏洞,影响数百万Windows 计算机
  9. 数据共享,回调函数,threading模块,守护线程
  10. 做一个简易jsp项目的详细开发流程及步骤
  11. 创建oracle系统dsn,timesten创建dsn
  12. 精准广告投放 —— 业务概念知识
  13. TestFlight测试步骤
  14. Django 前戏
  15. 计算机进行运算时为什么采用二进制数,计算机中为什么采用二进制
  16. QCustomPlot系列(2)-绘制两条曲线+自动全显+鼠标拖放+rescaleAxes()函数简介
  17. 百度文心一言可以完胜ChatGPT的4点可能性
  18. HTML_canvas
  19. 权限和归属——基本权限和特殊权限
  20. 色温所对及应的RGB颜色表

热门文章

  1. 以太坊·电影院场景区块链应用探索
  2. [经验分享] 覃超线上直播课-模拟面试
  3. go学习 --- godoc工具安装
  4. matlab sheet名字,MATLAB得到excel多个非默认sheet名_怎样利用matlab去读取一个excel表中多个sheet的数据并导入一个sheet中?...
  5. 编码原理详解(五)---熵编码(CAVAL)
  6. 水晶报表打印纸张设置
  7. 打印系统开发(27)——WinForm开发(49)——c# winform 打印图像,PrintDialog打印并且设置打印纸张大小
  8. 【云计算与大数据技术】分布式数据库NoSQL中KV、列式、图、文档数据库的讲解(图文解释 超详细)
  9. CRC码的编码、解码(循环冗余校验码)
  10. CANoe-第3个仿真工程-总线仿真- 3-2 工程实现