Java语言程序设计基础教程课件(第8章).ppt

上传人:marr****208 文档编号:156611338 上传时间:2020-12-19 格式:PPT 页数:51 大小:176KB
返回 下载 相关 举报
Java语言程序设计基础教程课件(第8章).ppt_第1页
第1页 / 共51页
Java语言程序设计基础教程课件(第8章).ppt_第2页
第2页 / 共51页
Java语言程序设计基础教程课件(第8章).ppt_第3页
第3页 / 共51页
Java语言程序设计基础教程课件(第8章).ppt_第4页
第4页 / 共51页
Java语言程序设计基础教程课件(第8章).ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《Java语言程序设计基础教程课件(第8章).ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计基础教程课件(第8章).ppt(51页珍藏版)》请在金锄头文库上搜索。

1、Java程序设计,第8章 流处理,第8章文件和流,I/O流概述 文件及文件字节流处理 文件字符流的处理 过滤流 对象的序列化 其他常用的流,学习目标,Java.io包中流的分类 会读写文件 理解和会使用过滤流 使用对象流保存对象的状态,8.1 I/O流概述,Java输入/输出流的功能 读写外存文件 读写缓冲 网络数据通信 多线程间的通信 Java把这些不同类型的输入、输出源抽象为流(stream),统一处理,输入流,输出流,流的划分,按数据流的读写方向不同,分为: 输入流 输出流 按流的数据单位不同,分为 字节流(InputStream/OutputStream) 字符流 (Reader/Wr

2、iter) 按流建立方式,分为 节点流 过滤流,8.1.1 I/O流的层次,2字符流( Reader/Writer ),8.2 文件处理,I/O处理中,最常见的是对文件的操作,java.io包中有关文件处理的类有:File、FileInputStream、FileOutputStream、FileReader、FileWriter 、 RamdomAccessFile等,File类 用来描述文件对象的属性,不用来进行文件的读/写操作 它既可以表示文件,也可以表示目录 使用它提供的方法,我们可以得到所指对象的描述信息,包括名称、存在否、读/写权限、路径等等。,8.2.1 File文件类,注意:,

3、当我们在Windows环境使用路径时,其分隔符不能是单一的“”符号,因为符号“”已经被转意了。例如: c:jbuilder3javabin () c:jbilder3javabin (),public File(String path); public File(String path,String name) public File(File dir,String name); String getName( ); String getPath( ); String getAbsolutePath( ); String getParent( ); String renameTo(File n

4、ewName);,File类常用方法:, 文件属性相关方法 boolean exists( ); boolean canWrite( ); boolean canRead( ); boolean isFile( ); boolean isDirectory( ); long lastModified( ); long length( );,boolean delete( ); boolean createNewFile() boolean mkdir( ); String list( ); String list(FilenameFilter filter),P189【例8-1】 读取文件夹中

5、所有java源文件,构造方法: FileInputStream(File file) FileInputStream(String name) FileOutputStream(File file) FileOutputStream(File file, boolean append) FileOutputStream(String name) FileOutputStream(String name, boolean append),FileInputStream和FileOutputStream,1FileInputStream 从字节流中读取数据: int read( ); int re

6、ad( byte b ); int read( byte b , int off, int len ); int available( ); long skip( long n ); close( );, 使用字节输入流中的标记: boolean markSupported( ); void mark( int readlimit ); void reset( ); /把读指针重新指向用mark方法所记录的位置,P189【例8-2】 顺序读取文本文件并输出,2FileOutputStream 往字节输出流中写入数据: void write( int b ); void write( byte

7、b ); void write( byte b , int off, int len ); void flush( ) ; void close( );,try FileInputStream fis = new FileInputStream(D:text.txt); FileOutputStream fos=new FileOutputStream(“D:text2.txt”); /输出流 System.out.print(content of text is : ); int b; while (b = fis.read() != -1) System.out.print(char) b

8、); fos.write(b); /写入 fis.close(); fos.close(); catch (Exception e) System.out.println(e); ,8.4 字符流的处理,汉字在文件中占用两个字节,如果使用字节流,读取不当会出现乱码。 Java中提供了处理以16位的Unicode码表示的字符流的类,即以Reader和Writer 为基类派生出的一系列类。,Reader和Writer,Reader和Writer这两个类是抽象类,只是提供了一系列用于字符流处理的接口,可通过使用由它们派生出来的子类对象来处理字符流。 FileReader和FileWriter主要用来

9、处理文件字符流,构造方法 FileReader(File file) FileReader(String fileName) FileWriter(File file) FileWriter(String fileName) FileWriter(String fileName, boolean append),1FileReader和FileWriter,1FileReader类, 读取字符 public int read() throws IOException; public int read(char cbuf) public int read(char cbuf,int off,in

10、t len) 关闭流 public abstract void close(),2 FileWriter类,向输出流写入字符 public void write(int c) public void write(char cbuf) public abstract void write(char cbuf,int off,int len) public void write(String str) public void write(String str,int off,int len), flush( ) 输出所有被缓存的字节。 关闭流 public abstract void close(

11、),try FileReader fis = new FileReader(D:text.txt); FileWriter fos=new FileWriter(“D:text2.txt”); System.out.print(content of text is : ); int b; while (b = fis.read() != -1) System.out.print(char) b); fos.write(b); fis.close(); fos.close(); catch (Exception e) System.out.println(e); ,8.2.3随机访问文件,Inp

12、utStream 和OutputStream 是顺序访问流,即只能对文件进行顺序地读/写。 RandomAccessFile随机访问文件允许对文件内容进行随机读/写。 RandomAccessFile类创建的流可以从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数。 RandomAccessFile类既不是InputStream的子类,也不是OutputStream的子类。,RandomAccessFile介绍, 构造方法: RandomAccessFile(String name,String mode); 参数mode是打开方式,r表示只读,rw表示可读写。 RandomAc

13、cessFile(File file,String mode);, 文件流指针的操作 int read() write(int b) Int read(byte b) write(byte b) string readLine() boolean readBoolean() writeBoolean() int readInt() writeInt(int v) float readFloat() writeFloat(float f) char readChar() writeChar(char c) writeChars(String s) void seek( long pos ); l

14、ong getLength(); int skipBytes( int n );,P191【例8-3】 使用RandomAccessFile读写整形数据,8.4.2 InputStreamReader和OutputStreamWriter,Java.io包中用于将字节流转化为字符流 生成流对象 public InputStreamReader(InputStream in); public OutputStreamWriter(OutputStream out); public OutputStreamWriter(OutputStream out,String encode);,FileIn

15、putStream fis = new FileInputStream(D:text.txt); InputStreamReader read=new InputStreamReader(fis); int b; while (b = read.read() != -1) System.out.print(char) b); fis.close(); read.close();, 读入和写出字符 基本同Reader和Writer。 获取当前编码方式 public String getEncoding(); 关闭流 public void close(),8.4.3 BufferedReader

16、和BufferedWriter,BufferedReader和BufferedWriter是关于Reader和Writer的过滤流, 除了Reader和Writer中提供的基本的读写方法外,增加对整行字符的处理,能够一次读取一行文本。, 生成流对象 public BufferedReader(Reader in); public BufferedReader(Reader in, int sz); public BufferedWriter(Writer out); public BufferedWriter(Writer out, int sz);, 读入/写出字符 public String readLine() /输入流方法 public void newLine() /输出流方法,P194【例8-4】一个BufferedReader的例子。,8.3 过滤流,过滤流在读/写数据的同时,提供了同步机制,使得某一时刻只有一个线程可以访问一个I/O流,以防止多个线程同时对一个I/O流进行

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号