java文件输入与输出_JAVA-文件操作与输入输出流

JAVA-文件操作与输入输出流

问题描述

统计一篇中文文章中的字符数量、句子数量、段落数量。其中句子以各种标点符号分割,包括(。 ? !)。 如果文章中,中国石油大学后没有(华东)、加上 (华东);将文章中的计通学院,改为计算机与通信工程学院。

文件创建-file

文件的三种构造方法:

/*直接在该目录下创建啊*/

File fOutput = new File("output.txt");//写入的文件

if(fOutput.exists()){

System.out.println(fOutput.getName()+"创建成功");

}

/*File(path,filename) 即路径和文件名*/

File fInput = new File("//home//phy//Desktop","in.txt");//读取的文件

File fOutput = new File("//home//phy//Desktop","output.txt");//写入的文件

if(fOutput.exists()){

System.out.println(fOutput.getName()+"创建成功");

}

第三种是目录和文件名

文件字符流+缓冲流

+文件字符流可以较好的读取Unicode字符

+缓冲流可以按行读取文件

+要求:文件字符输入流作为BufferedReader流的源,文件输出流作为BufferedWriter的目的地

int num=0,sum=0;

try{

Writer out = new FileWriter(fOutput); //字符输入流

BufferedWriter bufferedWriter = new BufferedWriter(out);//连接FILE流

Reader in = new FileReader(fInput);//字符输出流

BufferedReader bufferedReader = new BufferedReader(in);//连接FILE流

String txt=null;

while ((txt=bufferedReader.readLine())!=null){

num++;

/*中句子以各种标点符号分割,包括(。 ? !)*/

StringTokenizer stringTokenizer = new StringTokenizer(txt,"。!?");

/*注意,StringTokenizer的分隔符不需要使用转义字符*/

int count= stringTokenizer.countTokens();

txt+="第"+num+"段落有"+count+"个句子";

txt=txt.replace("中国石油大学(华东)","中国石油大学");

txt=txt.replace("中国石油大学","中国石油大学(华东)");

txt=txt.replace("计通学院","计算机与通信工程学院");

sum+=txt.length();

bufferedWriter.write(txt);

bufferedWriter.newLine();//新一行

}

txt="文章共有"+num+"段";

bufferedWriter.write(txt);

bufferedWriter.newLine();

bufferedWriter.write("文章共有"+sum+"个字符");

bufferedWriter.close();//一定记得关闭

/*多数IO方法在遇到错误时会抛出异常,因此调用这些方法时必须*/

}catch(IOException e){

System.out.println(e.toString());

}

处理流

不直接与数据源或目标相连,而是基于另一个流来构造:

File fInput = new File("input.txt");//读取的文件

FileInputStream inn = new FileInputStream(fInput) ;

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inn) );

/*InputStreamReader读取字节并转换为字符

BufferedReader对另一个流产生的数据进行缓冲*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值