java高级编程(输入输出处理)

上传人:第*** 文档编号:48873104 上传时间:2018-07-21 格式:PPT 页数:39 大小:319.50KB
返回 下载 相关 举报
java高级编程(输入输出处理)_第1页
第1页 / 共39页
java高级编程(输入输出处理)_第2页
第2页 / 共39页
java高级编程(输入输出处理)_第3页
第3页 / 共39页
java高级编程(输入输出处理)_第4页
第4页 / 共39页
java高级编程(输入输出处理)_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《java高级编程(输入输出处理)》由会员分享,可在线阅读,更多相关《java高级编程(输入输出处理)(39页珍藏版)》请在金锄头文库上搜索。

1、第8章流式输入 输出和文件处理学习目标v流的定义v流的分类和使用v掌握java中提供的输入输出的类体系; 学习目标v流的定义v流的分类和使用v掌握java中提供的输入输出的类体系; 流的定义v程序和设备间嫁接起来的一根用于传输数据的管道 ,这根管道上有很多按钮,不同的按钮实现不同的功能。v这根带按钮的用于数据传输的管道就是流v流就是管道。流的定义流和类的关系v如果一个类是作用于程序和设备之间的数据,则这个类有一个新的名字叫做流。v流一定是类,但类不一定是流。输入输出(I/O)概述v流一般分为输入流和输出流两类,v输入流:数据提供者,可从中读取数据出来v输出流:数据接收者,可往其中写数据流的分类

2、流的分类标准v在Java开发环境中,主要是由包java.io中提供的一系列的类和接口来实现输入/输出处理。vJ2SDK所提供的所有流类型是位于java.io内都继承自以下四种抽象类。字节节流字符流输输入流InputStreamReader输输出流OutputStreamWriter流的分类字节流InputStream概述vInputStream是字节输入流类的抽象超类,描述了所有字节输入流的共同行为方法。abstract int read() throws IOException 读取一个字节并以整数形式返回,如果读取到输入流 的末尾则返回-1.int read(byte b) throws

3、IOException 从输入流中读若干个字节到数组中。并将其存储到 缓冲区数组中。以整数形式返回实际独到的字节数 。vFileInputStream fr=new FileInputStream(“D:a.txt“);vlen=fr.read(buf);输入字节流InputStreamint read(byte b , int off , int len ) 从输入流中读len个字节到数组中。b是要存入数组 的名字,off是第一个要读出的数据要存入的位置 。len表示最多能读取的字节数。将从输入流所关联到的设备中读取的第一个字节存 储在元素boff中,下一个字节存储在boff+1中 ,以此类

4、推,读取的字节数最多等于len.v这些子类的构造函数都可以用某种方式指定其数据源 。v加强输入流,对InputStream类进行功能扩充uByteArrayInputStream( byte数组 ) uFileInputStream(文件路径名 或 File对象)uObjectInputStream (Inputstream in) uPipedInputStream (PipedOutputStream pipe)uSequenceInputStream 表示其他输入串的逻辑连接 uFilterInputStream(其他输入流)定义了子类对流的进一步处理功 能。uBufferedInput

5、Stream (InputStream in) uDataInputStream(InputStream in) 各种数据读入InputStream的子类OutputStream概述vOutputStream是字节输出流类的抽象超类,描述了所有字节输出流的共同行为方法。vabstract void write(int b):将指定的字节写入输出流中。vvoid write (byteb) :将指定的一组字节b写入到输出流中。vvoid flush() :立即传输。vvoid close( ):关闭输出流并释放与该流相关的系统资源。OutputStream的子类vFileOutputStream

6、(File类对象或文件名),vByteArrayOutputStream()数据被写到无名字节数组,该字节数组内容可利用toByteArray() 和 toString()分别取到指定字节数组和字符串中。 vPipedOutputStream (PipedInputStream pipe)vObjectOutputStreamvFilterOutputStream DataOutputStream(OutputStream out)包含输出各种数据类型数据的方法,如writeFloat() PrintStream(OutputStream out) 包含输出各种数据类型数据的方法,如print

7、(),println。 但没有对应输入流流的分类字符流输入字符流类 Readerv抽象类,是所有输入字符流类的父类v面向Unicode字符操作,Java使用Unicode码 表示字符和字符串。v方法:boolean ready() 判断输入字符流是否可读int read() 读取一个字符int read(char cbuf) 读取一串字符(到字符数组)long skip(long n) 跳过n个字符mark(int readAheadLimit) 在当前位置做一标记close() 关闭字符流Reader类子类vCharArrayReader(char buf)vPipedReader(Pipe

8、dWriter)vStringReader(String s)vBufferedReader(Reader in) 提供有效读的方法,如:readLine字节流字符流读字符InputStreamReader(InputStream in)FileReader(File对象 或 文件名)输出字符流类 Writer类v是所有表示输出字符流类的父类(抽象类) 。v功能:接受要输出的字符并将它送往目的地 。v方法:write(String str)write(char cbuf)flush()close()Writer类的子类vCharArrayWriter() toCharArray() and t

9、oString(). vStringWriter () 方法 toString vPipedWriter(PipedReader)vBufferedWriter(Write out) 提高I/O效率方法:write() 写字符或字符串vPrintWriter(OutputStream类或Writer类对象)方法:print println 实现各种类型数据的输出字节流字符流写字符OutputStreamWriter(OutputStream out)FileWriter(File对象或文件名)字节流和字符流的应用场合v见例题TestFileReader.java和 TestFileInputS

10、tream.java程序。两种流类vnode stream 对指定的地方(磁盘文件、内存 等)读/写vfilter stream 一个filter 流使用node流作为输入或输出。目 的 地数 据 源标准输入输出流Java的标准输入/输出vJava在java.lang.System类中声明了3个常量in(InputStream类)、out和err(PrintStream类)。vSystem.in.read():该方法可以从键盘接收数据。vSystem.out.print()/System.out.println():向显示器输出数据。标准输入输出流语言包java.lang中的System类管理

11、标准输入/输出流和错误流。System.in,是InputStream类的对象,当程序中需要从键盘读入数据时,可调用System.in的read()方法。该方法会引发受检查的IOException。System.out,是PrintStream类的对象,其中定义了向屏幕输送不同类型数据的方法print()和println()。System.err,也是从PrintStream中继承而来,把错误信息送到缺省的显示设备(通常是显示器)。File类标准文件类: FilevFile类的对象是文件系统中的一个目录或文件的抽象表示。vFile类对象描述文件路径、名字、长度、可否读写等属性,v利用File对

12、象,可用来命名文件、查询文件属性、对目录进行操作,但不读写文件。v上述操作都是以独立于系统的方式进行。v通过File类对象可以对操作系统的文件进行管理, 体现Java的跨平台性。File类构造函数vFile(String path)封装文件例(使用相对路径,移植性较好) File f1 = new File(“mydirmyfile.txt”);封装目录例(使用绝对路径) File f2 = new File(“d:mydirdir1”);vFile(String parent, String child )File f3 = new File(“d:d1” , “a.java”)vFile(

13、File dir, String name) File f4 = new File(f2 , ”myfile.txt”);win unix /File类方法获取文件属性v判断目标是否存在: public boolean exists()v判断是文件还是目录 public boolean isFile() public boolean isDirectory()v获取文件名称或整个路径 public String getName() 仅返回文件名 public String getPath() 返回整个路径字符串v获取文件长度 public long length()v获取文件读写属性 publ

14、ic boolean canRead() public boolean canWrite()v列出目录中的文件 public String list() /返回一个字符串数组 public File listFiles() /返回File类的对象数组File类方法文件/目录操作v重命名 public boolean renameTo(File new)v删除文件或目录 public boolean delete()v创建目录 public boolean mkdir()v创建目录及父目录(必要时)public boolean mkdirs()File类使用示例/*执行该例前,需在当前目录下建立

15、一个shubdir子目录,并 创建几个文件,其中包括一个名为a.java的文件,用于测试 */ import java.io.*; public class Test public static void main(String args) try File dir1 = new File(“subdir“);if ( dir1.exists() String files = dir1.list() ;System.out.println(“-列目录-“);for( int i=0; i files.length; i+) /列目录System.out.println( filesi);IO-1File dir2=new File(“subdird1“);if(!dir2.exists() dir2.mkdir(); /建目录System.out.println(“ -创建目录后再次列目录- “);files = dir1.list() ;for( int i=0; i files.length; i+)System.out.println( filesi);dir2.delete() ; /删除创建的目录File f1 = new File(“subdira.java“); System.out.pr

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

当前位置:首页 > 建筑/环境 > 工程造价

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