P1.将hohai.txt复制到workspace的工程目录,编写以下程序:
a)查看该文件包含多少字节。
b)查看该文件包含多少字符。
c)估算该文件包含多少句子。(无需100%准确)
d)估算该文件包含多少单词。(无需100%准确)

package test;
import java.util.*;
import java.io.*;
//P1.将hohai.txt复制到workspace的工程目录,编写以下程序:
//a)查看该文件包含多少字节。
//b)查看该文件包含多少字符。
//c)估算该文件包含多少句子。(无需100%准确)
//d)估算该文件包含多少单词。(无需100%准确)
public class Filedemo01
{public static void main(String[] args) throws IOException{//文件字节输入流FileInputStream is = new FileInputStream("hohai.txt");//逐个字节读System.out.println("输出的查找结果为:");int count1 = 0;int c;int countOfPharase=0;int countOfSentence=0;while((c=is.read()) != -1){count1++;if(c == ' ')countOfPharase++;else if(c=='.' || c=='!' || c=='?'||c==',')countOfSentence++;}//3-关闭字节输入流is.close();System.out.println("a. 该文件包含的字节数为:" + count1);//文件字符输入流FileReader reader = new FileReader("hohai.txt");//逐个字符读int count2=0;while(reader.read() != -1)count2++;//关闭字符输入流reader.close();System.out.println("b. 该文件包含的字符数为::"+count2);System.out.println("c. 该文件包含的句子数为::"+countOfSentence);System.out.println("d. 该文件包含的单词数为::"+countOfPharase);}
}

e)比较FileInputStream和BufferedInputStream的工作效率(速度)。

package test;import java.io.*;
//e)比较FileInputStream和BufferedInputStream的工作效率(速度)
public class Filedemo03 {public static void main(String args[]){try {long start = System.currentTimeMillis();System.out.println("程序开始执行的时间为:"+start);File fi = new File("E:/javaproject/hohai.txt");FileInputStream fis = new FileInputStream(fi);int c=fis.read();while(c!=-1){System.out.print((char)c);c=fis.read();}long end = System.currentTimeMillis();System.out.println("程序运行结束的时间为: "+end);System.out.println("程序执行时间为:" + (end - start) + "毫秒");start = System.currentTimeMillis();System.out.println("程序开始执行的时间为:"+start);File afi = new File("E:/javaproject/text.txt");FileInputStream afis = new FileInputStream(afi);BufferedInputStream bis = new BufferedInputStream(afis);c=bis.read();while(c!=-1){System.out.print((char)c);c=bis.read();}end = System.currentTimeMillis();afis.close();fis.close();bis.close();System.out.println("程序运行结束的时间为: "+end);System.out.println("程序执行时间为:" + (end - start) + "毫秒");} catch (Exception el) {el.printStackTrace();}}
}

f)查看字符串“hohai”出现过多少次。(可选题)

package test;
import static java.lang.System.out;
import java.io.*;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//f)查看字符串“hohai”出现过多少次。(可选题)
public class Filedemo02 {static int count=0;public static void find_word(String filename,String word) throws Exception {FileReader infile=new FileReader(filename);Pattern pat=Pattern.compile(word);BufferedReader reader=new BufferedReader(infile);String aLine=reader.readLine();while(aLine !=null) {Matcher mat=pat.matcher(aLine);if(mat.find()) {count++;  aLine=reader.readLine();}}//System.out.println(count);reader.close();          }public static void main(String[] args) throws Exception {  Scanner sc=new Scanner(System.in);out.print("请输入文件名:");String filename=sc.next();out.print("请输入要查找的单词:");String word=sc.next();System.out.println("正常输入");find_word(filename,word);System.out.println("执行成功");System.out.println(word+"出现的行的次数是"+count);}}

g)显示第1000个字节后的第一个完整单词。(可选题)

package test;
import java.io.*;
//g)显示第1000个字节后的第一个完整单词。(可选题)
public class Filedemo04 {public static void main(String[] args) throws IOException{FileInputStream fis = new FileInputStream("hohai.txt");byte[] bytes = new byte[35];  // 两个单词长度不超过35byte b;int i = 0, j = 0, count = 0;// 跳过前999个字节fis.skip(999);/*int len = (int)fis.skip(999);System.out.println(len);  // 实际跳过字节数*/// 将第1000个字节及之后34个字节记录fis.read(bytes);for(int k=0; k<35; k++){b = bytes[k];// 从第1000个字节开始,找出首次满足的两个非字母的字节位置// 即第1000个字节后,首个完整字母的起始位置-1与结束位置+1if(!((b>='A' && b<='Z') || (b>='a' && b<='z'))){count ++;if(count == 1)i = k+1;if(count==2){// 出现两相邻的非字母时if((k-i)==0){i = k;  // 更新icount --;  // 恢复countcontinue;}j = k-1;break;}}}// 以下是第1000--1034个字节结果输出,用于检验答案System.out.print("第1000--1034个字节结果输出,用于检验答案:   ");System.out.println(new String(bytes));// 以下是答案输出System.out.print("第1000个字节后的第一个完整单词是:");System.out.println(new String(bytes, i, j-i+1));}}

代码改进(在更新的地方把k=i改成k=i+1)

import java.io.*;public class P1_g {public static void main(String[] args) throws IOException{FileInputStream fis = new FileInputStream("hohai.txt");byte[] bytes = new byte[35];  // 两个单词长度不超过35byte b;int i = 0, j = 0, count = 0;// 跳过前999个字节fis.skip(999);/*int len = (int)fis.skip(999);System.out.println(len);  // 实际跳过字节数*/// 将第1000个字节及之后34个字节记录fis.read(bytes);for(int k=0; k<35; k++){b = bytes[k];// 从第1000个字节开始,找出首次满足的两个非字母的字节位置// 即第1000个字节后,首个完整字母的起始位置-1与结束位置+1if(!((b>='A' && b<='Z') || (b>='a' && b<='z'))){count ++;if(count == 1)i = k+1;if(count==2){// 出现两相邻的非字母时if((k-i)==0){i = k+1;  // 更新i  在这里改进提高效率count --;  // 恢复countcontinue;}j = k-1;break;}}}// 以下是第1000--1034个字节结果输出,用于检验答案System.out.println(new String(bytes));// 以下是答案输出System.out.println(new String(bytes, i, j-i+1));}
}

P2. 编写如下程序。
a)用循环语句和DataOutputStream类,将99乘法表数据存入指定的文件。
(注:需整理格式)
b)用DataInputStream打开该文件,显示所有数据。
示例:

package test;
import java.io.*;//P2.  编写如下程序。//a)用循环语句和DataOutputStream类,将99乘法表数据存入指定的文件。
//      (注:需整理格式)//b)用DataInputStream打开该文件,显示所有数据
public class Iotestdemo01 {public static void main(String[] args){String str;File file=new File("E:\\javaproject\\test\\iotext.txt");try {FileOutputStream fos=new FileOutputStream(file);BufferedOutputStream bos=new BufferedOutputStream(fos);DataOutputStream dos=new DataOutputStream(bos);for(int i=1;i<=9;i++) {for(int j=1;j<=9;j++) {str=(i*j+"\t");dos.writeBytes(str);}dos.writeBytes("\n");}dos.close();bos.close();fos.close();}catch(IOException e) {System.out.println("发生错误");}try {FileInputStream fis=new FileInputStream(file);BufferedInputStream bis=new BufferedInputStream(fis);DataInputStream dis=new DataInputStream(bis);while(dis.available()>0) {str=dis.readLine();System.out.print(str);}dis.close();bis.close();fis.close();}catch(IOException e) {System.out.println("发生错误");}}}

Java字节流文件流的练习相关推荐

  1. java AES文件流加密

    java AES文件流加密 文章转载自:https://www.cnblogs.com/gne-hwz/p/14736496.html java工具类-对称加密算法AES 加密文件流 工具类出自jdk ...

  2. Java之文件流操作的文件读写

    Java之文件流操作的文件读写 本人非常喜欢Java的代码风格,今天记录一下文件字符串的读写,但是Java对于 制作exe文件非常不友好,而本人业务的要求,基本上都是制作exe文件,或者程序,Java ...

  3. react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析

    记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...

  4. java文件流下载excel_React获取Java后台文件流下载Excel文件

    记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...

  5. Java File文件流读取文件夹内的文件并替换文件内容

    Java File文件流读取文件夹内的文件并替换文件内容 一.前言 二.代码 三.运行结果 一.前言 批量读取文件夹内的文件,并替换各个文件的内容 二.代码 新建一个普通 Java 项目就可以,创建文 ...

  6. 让你的数据和对象有源有出路,一文打尽,Java常用IO流处理流(处理字节流文件流)缓冲流、转换流、对象流等

    文章目录 缓冲流 转换流 标准输入输出流 打印流 数据流 对象流 随机存取文件流 Java NIO 缓冲流 为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个 ...

  7. java 字节流 字符流 的详细介绍

    1.IO流 1.1 IO流的概念 我们把数据的传输,可以看成一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存的是输入流,流出内存的叫输出流. java中I ...

  8. Java中文件流的基本用法

    1.文件流是什么? Java中的文件流,即以文件为主要对象,进行数据的输入或输出. 2.文件流包括什么 Java中,文件流包括四类:FileInputStream.FileOutPutStream.F ...

  9. java接收文件流并操作文件流

    1.controller层 @PostMapping("/upload")public Resp upload(@RequestParam MultipartFile multip ...

最新文章

  1. Nat. Commun. | 多层生物分子网络的鲁棒性研究
  2. java 对 mysql 最简配置
  3. 一步步部署SharePoint Workflow 2013
  4. 关于git经常忘记的:远程仓库关联。
  5. 项目启动 ora-00942:_如何解决大型软件项目开发难题?唯快不破!
  6. java hadoop2.6.0 读取文件报错_java 程序访问hdfs错误 hadoop2.2.0
  7. java连接各数据库的语句
  8. Eclipse——UML类图插件
  9. 如何用Seaborn描绘线图,分面网格关联图,密度图,连接图,热力图,线性回归图,分面网格绘图
  10. ksweb如何安装php5.6_Android端的服务器容器 KSWEB PHP+MySQL环境搭建及应用
  11. Kepware AB驱动 · 秒懂百科
  12. QComboBox下拉框给选项增加删除按钮
  13. 图像区块分割与采样YUV4:2:0
  14. Redis Cluster集群搭建
  15. VBE开源插件Rubberduck
  16. ThinkPHP核心框架目录结构
  17. 用python给pdf批量添加水印,并给pdf加密
  18. 蒙特卡洛(随机试验)法计算π
  19. 用4K屏幕的笔记本跑虚拟机vmware如何放大字体?
  20. 说说WinCE的WS_EX_TOPMOST和窗口置顶显示

热门文章

  1. easyui数据表格重置_Python办公自动化,自动更新表格,告别繁琐
  2. Golang Failpoint 的设计与实现
  3. celery 停止执行中 task
  4. react-redux的Provider和connect
  5. BSP、PSP到底指什么?
  6. Python简介及安装
  7. 聊聊WEB系列_Index
  8. NS2中802.11代码深入理解—packet传输的流程 (转帖)
  9. 【转】矮个子女生夏天穿衣法则
  10. SQLSERVER系统数据库工作原理