标签:string stream try 数据 close 成功 lin class ++
统计一篇中文文章中的字符数量、句子数量、段落数量。其中句子以各种标点符号分割,包括(。 ? !)。 如果文章中,中国石油大学后没有(华东)、加上 (华东);将文章中的计通学院,改为计算机与通信工程学院。
文件的三种构造方法:
/*直接在该目录下创建啊*/
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,"!,..!?");
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对另一个流产生的数据进行缓冲*/
标签:string stream try 数据 close 成功 lin class ++
原文地址:https://www.cnblogs.com/smallocean/p/10198244.html