题目:
将电脑上的图片复制到IDEA的环境中
将一篇文章通过流写入文本文件中,再获取文本,并统计每一个字和标点符号出现的次数
思路:
有点类似于爬虫。因为图片一般比较大,所以这里我们展开了为BufferStream类来提高效率。同样情况适合视频写入和读出
文本文字考虑在一开始的时候就开始统计字数,那么应该为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();
}
}运行结果:



被折叠的 条评论
为什么被折叠?



