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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,"!,..!?");
               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对另一个流产生的数据进行缓冲*/

以上是关于JAVA-文件操作与输入输出流的主要内容,如果未能解决你的问题,请参考以下文章

Java 输入输出——流

Java 演示如何用标准的输入输出流重定向到一个文件

Java IO总结

java的IO操作:字节流与字符流操作

Java入门——IO(输入与输出)

输入流与输出流