java网络编程第6章

上传人:xu****iu 文档编号:245061163 上传时间:2024-10-07 格式:PPT 页数:29 大小:654KB
返回 下载 相关 举报
java网络编程第6章_第1页
第1页 / 共29页
java网络编程第6章_第2页
第2页 / 共29页
java网络编程第6章_第3页
第3页 / 共29页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,*,第一章,JAVA IO,字符流,课程目标,Reader,Writer,InputStreamReader,OutputStreamWriter,FileReader,FileWriter,BufferedReader,PrintWriter,体验项目,如图的窗体布局,当点击“打开”时打开文件对话框,并把打开的文本文件的内容显示到窗体的文本域中,当点击“保存”时把文本域的内容保存到文件中,点击“Exit”时退出程序。,字符流,字符流顾名思义是用来操作字符的,其实字节流类提供的功能足以满足处理任何类型I/O操作的需要,但是它们不能直接处理Unicode字符。但JAVA的一个主要目的是支持“只写一次,在各处运行”的思想,所以它必须包括对字符直接的I/O支持。本节讨论了几个字符I/O类。在字符流层次的顶部是Reader和Writer抽象类。,字节流和字符流的区别和各自的用途,字符流处理的单元为两个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由JAVA虚拟机将字节转化以两个字节的Unicode字符为单位的字符而组成的,所以它对多国语言支持性比较好,如果是音频文件、图片、歌曲,就用字节流比较好,但如果是关系到中文(文本)的,用字符流比较好。,流类表,流 类,意 义,BufferedReader,缓冲输入字符流,BufferedWriter,缓冲输出字符流,CharArrayReader,从字符数组读取的输入流,CharArrayWriter,写到字符数组的输出流,FileReader,从文件读取的输入流,FileWriter,输出到文件的输出流,FilterReader,过滤读放流,FilterWriter,过滤写入流,InputStreamReader,将字节转换到字符的输入流,LineNumberReader,计算行数的输入流,OutputStreamWriter,转换字符到字节的输出流,PipedReader,输入管道,PipedWriter,输出管道,PrintWriter,包含print()和println()的输出流,PushbackReader,返回一个字符并把此字节放回输入流,Reader,描述字符流输入的抽象类,StringReader,从字符串读取的输入流,StringWriter,输出到字符串的输出流,Writer,描述字符流输出的抽象类,字符类的层次结构,Reader,Reader类是所有输入流类的祖先,所以它只定义了一些最基本的方法,它直接的下一级子类是BufferedReader类、CharArrayReader类、FilterReader类、InputStreamReader类、PipedReader类和StringReader类等。这些类的所有方法在发生错误时都会抛出IOException异常。,Reader的常用方法,abstract void close(),关闭输入源。如果继续读会产生IOException异常。,void mark(int numChars),放置一个标记到输入流的当前点。它会一直有效,直到读取了numChars个字符。,boolean markSupported(),如果这个流支持mark()/reset()方法,将返回true。,int read(),返回调节器所用的输入流中下一个可用字符的整数表示。如果文件结束,返回-1。,Reader的常用方法,int read(char buffer),试图读buffer.length个字符到buffer中,并且返回成功读取的实际字符数。如果遇到文件结尾,返回-1。,abstract int read(char buffer,int offset,int numChars),将字符读入数组的某一部分,返回成功读取的字符数。如果遇到文件结尾,则返回-1。,boolean ready(),如果下一个输入请求不必等待,则返回true;否则,返回false。,void reset(),重置输入指针到前面设置的标记。,long skip(long numChars),跳过numChars个字符输入,返回实际跳过的字符数。,Writer,Writer类最直接的子类是BufferedWriter类、CharArrayWriter类、FileWriter类、PrintWriter类等。Writer类与Reader类一样,它也是抽象类,用于定义字符流输出的抽象类。因此它提供的方法中不包括构造方法,无法直接产生它的一个实例对象。所以要由其子类去构造真正的输出流实体对象,然后就可以把那个由其子类构造的输出流拿来使用。并且在有异常的情况下会抛出IOException异常。,Writer的常用方法,writer append(char ch)throws IOException,追加ch到调用输出流末尾,返回对调用输出流的引用。,writer append(CharSequence chars)throws IOException,追加chars到调用输出流末尾,返回对调用输出流的引用。,abstract void close(),关闭输出流。如果继续写入会产生IOException异常。,abstract void flush(),确定输出状态以便清空任何缓冲区,即清空输出缓冲区。,Writer的常用方法,void write(int ch),写入单个字符到调用的输出流。注意参数是一个整数,它允许使用不必转换为char的表达式来调用write。,void write(char buffer,int offset,int numChars),写入buffer数组中从offset开始的numChars个字符到调用输出流。,void write(String str),写入str到调用输出流。,void write(String str,int offset,int numChars),写入str字符串中从offset开始的numChars字符。,InputStreamReader,InputStreamReader继承了Reader,它实现了Reader的抽象方法,InputStreamReader是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定,否则可能为默认的字符集。每次调用InputStreamReader中的一个read()方法都会导致从基础输入流读取一个或多个字节。为了达到最高效率,可以考虑在BufferedReader内包装InputStreamReader,BufferedReader类在后面小节中介绍。例如以下语句把一个读取从控制台输入的InputStreamReader转换为了BufferedReader:,BufferedReader in=,new BufferedReader(new InputStreamReader(System.in);,InputStreamReader的常用方法,void close(),关闭当前流。,String getEncoding(),返回此流使用的字符编码的名称。,int read(),读取单个字符。,int read(char cbuf,int offset,int length),将字符读入数组中的某一部分。,boolean ready(),告知是否准备读取此流。,OutputStreamWriter,OutputStreamWriter继承了Writer类并且实现了Writer的抽象方法,它与InputStreamReader相反,OutputStreamWriter是字符流通向字节流的桥梁:他使用指定的charset将写入的字符编码转换为字节输出。它使用的字符集可以由名称指定或显示给定,否则可能接受平台默认的字符集。注意,传递到此write()方法的字符是未经缓冲的。为了达到最高效率,可考虑将OutputStreamWriter包装到BufferedWriter中以避免频繁调用转换器,BufferedWriter类将在后面小节中介绍。例如:,BufferedWriter out=,new BufferedWriter(new OutputStreamWriter(System.out);,OutputStreamWriter的常用方法,void close(),关闭当前流。,String getEncoding(),返回此流使用的字符编码的名称。,int write(int c),写入单个字符。,int write(char cbuf,int offset,int length),写入字符数组的某一部分。,void flush(),刷新流的缓冲。,FileReader,FileReader类继承了InputStreamReader,所以除了有InputStreamReader的功能以外还有自己的一些功能,可以使用它直接读取文件的内容。它也是读取字符文件的便捷类。以前读取汉字时都要先用File对象构造出字节流对象,再用字节流对象构造出字符流对象,才能读写字符,FileReader可以直接实现以上功能,它的两种最常用的构造函数如下所示:,FileReader(String filePath),FileReader(File fileObj),每一个构造函数都能够抛出,FileNotFoundException,异常。这里,,filePath,是文件的路径全名,,fileObj,是描述文件的,File,对象。,FileReader的常用方法,从类java.io.InputStreamReader继承的方法:,int read(),读取单个字符,返回值为数据内容。,int read(char cbuf,int offset,int length),将字符读入数组中的某一部分,返回值为读到的个数而不是内容。,FileWriter,FileWriter类继承了OutputStreamWriter类,所以它有OutputStreamWriter类的全部功能,另外它还有自己的一些功能,FileWriter类可以创建一个写文件的对象,它也是向文件写入字符的便捷类,以前学习过写入字符的方法,先生成File对象,再用File对象构造出字节流对象,然后用字节流对象构造出字符流对象,FileWriter可以实现直接向文件中写入字符的功能。,FileWriter的几种构造方法,FileWriter(String filePath),FileWriter(String filePath,Boolean append),FileWriter(File fileObj),FileWriter(File fileObj,Boolean append),其中构造函数中的参数意义分别是:,Boolean append是否附加写。,String filePath文件路径。,File fileObjFile对象。,FileWriter的常用方法,从类 java.io.OutputStreamWriter继承的方法有:,void write(char cbuf,int off,int len),写入字符数组的某一部分。,void write(int c),写入单个字符。,void write(String str,int off,int len),写入字符串的某一部分。,BufferedReader,BufferedReader由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine()方法,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,所以它在实例化对象时只能以Reader为参数构造。,BufferedReader有两个构造函数:,BufferedReader(R
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!