您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 招标投标 > 9 流、文件及基于文本的应用修改版
Java程序设计第9章输入、输出流及文件处理第9章流、文件及基于文本的应用9.1流式输入与输出大部分程序都需要输入/输出处理,比如从键盘读取数据、向屏幕中输出数据、从文件中读或者向文件中写数据、在一个网络连接上进行读写操作等。在Java中,把这些不同类型的输入、输出源抽象为流(Stream。按流的方向,可分为输入流与输出流。文件程序终端文件程序网络端点数据流起点终点网络端点文件,字符串存储区第9章流、文件及基于文本的应用9.1.1字节流与字符流字节流字符流输入InputStreamReader输出OutputStreamWriter第9章流、文件及基于文本的应用1.InputStream类InputStream类最重要的方法是读数据的read()方法。read()方法功能是逐字节地以二进制的原始方式读取数据,它有三种形式:publicintread();publicintread(byteb[]);publicintread(byte[]b,intoff,intlen);第9章流、文件及基于文本的应用2.OutputStream类OutputStream类的重要方法是write(),它的功能是将字节写入流中,write()方法有三种形式:publicvoidwrite(intb);//将参数b的低位字节写入到输出流publicvoidwrite(byteb[]);//将字节数组b[]中的全部字节顺序写入到输出流publicvoidwrite(byte[]b,intoff,intlen);//将字节数组b[]中从off开始的len个字节写入到流中Output的另外两个方法是flush()及close()。publicvoidflush();publicvoidclose();第9章流、文件及基于文本的应用3.Reader类Reader类与InputStream类相似,都是输入流,但差别在于Reader类读取的是字符(char),而不是字节。Reader的重要方法是read(),有三种形式:publicintread();publicintread(charb[]);publicintread(char[]b,intoff,intlen);第9章流、文件及基于文本的应用4.Writer类Writer类与OutputStream类相似,都是输出流,但差别在于Writer类写入的是字符(char),而不是字节。Writer的方法有:publicvoidwrite(intb);//将参数b的低两字节写入到输出流publicvoidwrite(charb[]);//将字符数组b[]中的全部字节顺序写入到输出流publicvoidwrite(char[]b,intoff,intlen);//将字节数组b[]中从off开始的len个字节写入到流中publicvoidwrite(Strings);//将字符串写入流中publicvoidwrite(Strings,intoff,intlen);//将字符串写入流中,off为位置,len为长度publicvoidflush();//刷新流publicvoidclose();//关闭流第9章流、文件及基于文本的应用9.1.2节点流和处理流按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流与处理流两类。(1)节点流(NodeStream)可以从或向一个特定的地方(节点)读写数据。如文件流FileReader。(2)处理流(ProcessingStream)是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读、写功能。处理流又称为过滤流,如缓冲处理流BufferedReader。第9章流、文件及基于文本的应用节点流与处理流的关系,如图所示。节点流直接与节点(如文件)相连,而处理流对节点流或其他处理流进一步进行处理(如缓冲、组装成对象,等等)。第9章流、文件及基于文本的应用处理流的构造方法总是要带一个其他的流对象作参数。如:BufferedReaderin=newBufferedReader(newFileReader(file));BufferedReaderin2=newBufferedReader(new(InputstReamreader(newFileInputStream(file)));一个流对象经过其他流的多次包装,称为流的链接第9章流、文件及基于文本的应用常用的节点流节点类型字节流字符流File文件FileInputStreamFileOutputStreamFileReaderFileWriterMemoryArray内存数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriterMemoryString字符串StringReaderStringWriterPipe管道PipedInputStreamPipedOutputStreamPipedReaderPipedWriter第9章流、文件及基于文本的应用常用的处理流处理类型字节流字符流Buffering缓冲BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriterFiltering过滤FilterInputStreamFilterOutputStreamFilterReaderFilterWriterConvertingbetweenbytesandcharacter字节流转为字符流InputStreamReaderOutputStreamWriterObjectSerialization对象序列化ObjectInputStreamObjectOutputStreamDataconversion基本数据类型转化DataInputStreamDataOutputStreamCounting行号处理LineNumberInputStreamLineNumberReaderPeekingahead可回退流PushbackInputStreamPushbackReaderPinting可显示处理PrintStreamPrintWriter第9章流、文件及基于文本的应用9.1.3标准输入和标准输出System.out提供向“标准输出”写出数据的功能System.out为PrintStream类型.System.in提供从“标准输入”读入数据的功能System.in为InputStream类型.System.err提供向“标准错误输出”写出数据的功能System.err为PrintStream类型.第9章流、文件及基于文本的应用向标准输出写出数据System.out/System.err的println/print方法println方法可将方法参数输出并换行print方法将方法参数输出但不换行print和println方法针对多数数据类型进行了重写(boolean,char,int,long,float,double以及char[],Object和String).print(Object)和println(Object)方法中调用了参数的toString()方法,再将生成的字符串输出第9章流、文件及基于文本的应用从标准输入读取数据为了使用方便,经常将System.in用各种处理流进行封装处理,如:BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));br.readLine();第9章流、文件及基于文本的应用例2-4importjava.io.*;classAppLineInOut{publicstaticvoidmain(String[]args){Strings=;System.out.println(pleaseinputaline:);try{BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));s=in.readLine();}catch(IOExceptione){}System.out.println(Youhaveentered:+s);}}第9章流、文件及基于文本的应用例2-5importjava.io.*;publicclassAppNumInOut{publicstaticvoidmain(String[]args){Strings=;intn=0;doubled=0;try{BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));System.out.println(pleaseinputanint:);s=in.readLine();n=Integer.parseInt(s);System.out.println(pleaseinputadouble:);s=in.readLine();d=Double.parseDouble(s);}catch(IOExceptione){}System.out.println(Youhaveentered:+n+and+d);}}第9章流、文件及基于文本的应用2006.02BySCEMIXMJStringTokenizer类分解字符串成可被独立使用的单词[java.util包]创建StringTokenizer对象StringTokenizer(Strings)StringTokenizer(Strings,Stringdelim)StringTokenizer类常用方法countTokens()单词计数变量hasMoreTokens()countTokens0truenextToken()逐个获取单词第9章流、文件及基于文本的应用importjava.util.*;publicclassST{publicstaticvoidmain(String[]args){Stringstr=“中国.四川.攀枝花”;StringTokenizerst=newStringTokenizer(str,“.”);intnumber=st.countTokens();System.out.println(“共有单词:”+number);while(st.hasMoreTokens()){System.out.print(number-st.countTokens()+“:”);System.out.println(st.nextToken());}}}共有单词:30:中国1:四川2:攀枝花第9章流、文件及基于文本的应用importjava.util.*;importjava.io.*;publicclassTestConsoleTokenizer{publicstaticvoidmain(String[]args){Stringstr,str1;doubled;inti;try{BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));str=in.readLine();StringTokenizerst=newStringTokenizer(str);str1=st.nextToken();d=Double.parseDouble(str1);str1=st.nextToken();i=Integer.parseInt(str1);System.out.println(d++i+);}catch(IOExceptione){e.printStackTr
本文标题:9 流、文件及基于文本的应用修改版
链接地址:https://www.777doc.com/doc-3504650 .html