Java(Scanner与其他字符流结合)

来源:互联网 发布:lhgdialog.js官方下载 编辑:程序博客网 时间:2024/06/03 03:35

除了最基本的字符流外,还有其它类,如CharArrayReader,CharArrayWriter,StringReader,StringWriter,PrintWriter,PushbackReader等,这些字符流的详细使用说明可以参考JavaAPI文档
一般的,名称以Reader结尾的类都是字符输入流,其大部分读取数据的方法都来自Reader类,名称以Writer结尾的类都是字符输出流,其大部分写数据的方法都来自Writer类,名称以Stream结尾的类一般都是字节流。
PrintWriter用于向字符(文本)输出流打印对象的格式化表示形式
Scanner是一个可以使用正则表达式来解析字符串的简单文本扫描器。Scanner使用分隔符模式将其输入分解为标记,在默认情况下该分隔符模式与空白匹配。然后可以使用不同的next()方法将得到的标记转换为不同类型的值,在读取下一个标记之前可以使用hasNext()方法检测下。
基本思路是先用Scanner类和文件字符输入流读取文件中的每一行,再用Scanner扫描解析每一行,得到需要的数据。

import java.io.FileNotFoundException;import java.io.FileReader;import java.io.PrintWriter;import java.util.Scanner;public class ScannerPrintWriterDemo {    public static void main(String[] args) {    Scanner s=null;    PrintWriter pw=null;        try{            s=new Scanner(new FileReader("source.txt"));            pw=new PrintWriter("dest.txt");            while(s.hasNextLine())            {                String strLine=s.nextLine();                int sum=getLineSum(strLine);                pw.println(strLine +"\t"+sum);            }        }        catch(FileNotFoundException e)        {            e.printStackTrace();        }finally        {            if(s!=null)                s.close();            if(pw!=null)                pw.close();        }    }    private static int getLineSum(String strLine)    {        Scanner s=new Scanner(strLine);        int sum=0;        while(s.hasNextInt())        {            sum+=s.nextInt();        }        return sum;    }}

提示:Scanner不仅可以读取解析输入流的内容,还可以扫描解析字符串,转换成用户需要的数据。

0 0