输入输出流与文件操作课件

上传人:F****n 文档编号:88170298 上传时间:2019-04-20 格式:PPT 页数:27 大小:353KB
返回 下载 相关 举报
输入输出流与文件操作课件_第1页
第1页 / 共27页
输入输出流与文件操作课件_第2页
第2页 / 共27页
输入输出流与文件操作课件_第3页
第3页 / 共27页
输入输出流与文件操作课件_第4页
第4页 / 共27页
输入输出流与文件操作课件_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《输入输出流与文件操作课件》由会员分享,可在线阅读,更多相关《输入输出流与文件操作课件(27页珍藏版)》请在金锄头文库上搜索。

1、第八章 输入输出流与文件操作,目 录,输入输出流的分类,目录和文件管理,文件的随机访问,其他常用的流,字符流,字节流,输入输出流的分类,Java流的概念 Java使用流(stream)来执行输入输出(I/O)的功能,流是一 种数据的源头和目的之间的通信途径。 标准输入输出 Java系统事先定义好两个流对象,分别与系统的标准输入 和标准输出相联系,它们是System. in和System.out System是Java中一个功能很强大的类,利用它可以获得很 多Java运行时的系统信息。,输出流(程序写出数据),输入流(程序读入数据),Java流类体系结构1,Java流类体系结构2,Java流类体

2、系结构3,Java流类体系结构4,Java流的概念,输入输出流的分类,【例8.1】标准输入输出举例。,标准输入输出,输入输出流的分类,import java.io.*; public class IODemo public static void main(String args) throws IOException int b; int count=0; while(b=System.in.read()!=-1)count+;System.out.print(char)b); System.out.println(); System.out.println(“program end“);

3、,运行结果: 输入:a,b,c,d 输出:a,b,c,d 输入:Z 输出: program end,目录和文件管理,文件名的处理,File类,文件或目录的生成,文件属性测试,普通文件信息和工具,目录操作,public File(String path):如果path是实际存在的路径,则该File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。 public File(String path,String name):path是路径名,name是文件名(不可为空)。 public File(File dir,String name):dir是路径名,name是文件名。,St

4、ring getName( ):得到一个文件的名称(不包括路径)。 String getPath( ):得到一个文件的路径名。 String getAbsolutePath( ):得到一个文件的绝对路径名。 String getParent( ):得到一个文件的上一级目录名。 String renameTo(File newName):将当前文件名更名为给定文件的完整路径。,【例8.2】,boolean exists( ):测试当前File对象所指示的文件或目录是否存在,若存在,返回True。 boolean createNewFile():创建当前文件。 boolean canWrite(

5、):测试当前文件是否可写。 boolean canRead( ):测试当前文件是否可读。 boolean isFile( ):测试当前文件是否是文件(不是目录)。 boolean isDirectory( ):测试当前文件是否是目录,若为目录则返回True。,【例8.3】,long lastModified( ):得到文件最近一次修改的时间。 long length( ):得到文件的长度,以字节为单位,若不存在,返回0。 boolean delete( ):删除File对象代表的文件或目录,目录需为空。删除成功,返回True。,boolean mkdir():生成一个由该对象指定的路径(新目录

6、),若成功,返回True。 boolean mkdirs():生成一个新的目录,包含子目录。若成功,返回true。 boolean renameTo(File newName):将当前File对象所代表的路径名改为newName所代表的路径名。若成功,返回true。 String list():列出当前目录下的文件。,【例8.4】,File类的应用,【例8.5】,【例8.6】,字节流,顺序读/写文件(FileInputStream与FileOutputStream),FileInputStream类从磁盘文件读取数据。常用的构造方法有: FileInputStream(String name)

7、:打开文件name用来读取数据。 如:FileInputStream f =new FileInputStream(“c:/test.txt“); FileInputStream(File file):打开文件file用来读取数据。 如:File f=new File(“c:/test.txt“); FileInputStream f1=new FileinputStream(f);,FileOutputStream类创建文件(如果文件不存在),并将数据写入文件。FileOutputStream类常用的构造方法有: FileOutputStream(String name):打开文件name用

8、来写入数据。 如:FileOutputStream f=new FileOutputStream (“c:/test.txt“); FileOutputStream(File file):打开文件file用来写入数据。 如:File f =new File(“c:/test.txt“); FileOutputStream f1=new FileOutputStream (f); FileOutputStream(String name,Boolean append):打开文件name用来写入数据,若append为true,则写入的数据会加到原有文件后面,否则,覆盖原有的文件。 如:FileOu

9、tputStream f =new FileOutputStream(“c:/test.txt“,true);,字节流,字节流,【例8.7】将FileIO.java复制为FileExam.java.bak。,import java.io.*; public class FileIO public static void main(String args) FileInputStream inFile=null; FileOutputStream outFile=null; tryinFile=new FileInputStream(“FileIO.java“); outFile=new Fil

10、eOutputStream(“FileExam.java.bak“); int data; while(data=inFile.read()!=-1)outFile.write(data); catch(FileNotFoundException e)System.out.println(e.getMessage(); catch(IOException e)System.out.println(e.getMessage(); finallyif(inFile!=null)tryinFile.close();catch(IOException e) if(outFile!=null)tryou

11、tFile.close();catch(IOException e) ,程序运行结果,【解题分析】以下问题的求解过程可分解如下: 先打开文件FileExam.java 用read()将其内容逐字节读取出来(如果返回值为-1,则表明已到达文件尾端) 再用write()将读出的字节逐一写入另一个文件FileExam.java.bak中 若文件无法打开(例如FileExam.java不存在)或无法生成(FileExam.java.bak),则抛出FileNotFoundException异常,若读写出错,则抛出IOException异常。 最后,在finally中关闭文件。,在使用FileInput

12、Stream类时,若关联的目录或者文件不存在,Java会抛出一个IOException异常。程序可以使用try-catch块检测和处理捕捉到的异常。 为了把一个文件输入流对象与一个文件关联起来,可以使用下列的代码段来处理Java产生的IOEception异常。 例如:try FileInputStream fis=new FileInputStream(“java.txt“); catch(IOException e) System.out.println(“File Exception:“+e); ,注:,字节流,字节流,ByteArrayInputStream 将字节数组用作源,并在该数组

13、中执行读 操作。 它有两种构造方法。第一种构造方法将字节数组作为参数。 ByteArrayInputStream(byte buffer):生成一个字节数组的输入流,并指定一个字节数组buffer为此输入流的流缓冲区。 如:ByteArrayInputStream b =new ByteArrayInputStream(buf); 另外一种构造方法是从指定的字节数组来创建。 ByteArrayinputStream b =new ByteArrayinputStream(buf,off,len); 其中off是要读取的第一个字节的偏移,len是要读取数组的字节数;,ByteArrayOutpu

14、tStream有2种构造方法。 ByteArrayOutputStream():生成一个字节数组的输出流,其缓冲区的默认初始大小为32字节,若有需要,缓冲区的大小会随之增加。 如:ByteArrayOutPutStream b=new ByteArrayOutputStream() ; ByteArrayOutputStream(int size):创建32个字节的缓冲器用于储存数据,但分配size字节的初始大小给此缓冲区。 如:ByteArrayOutputStream b1=new ByteArrayOutputStream(size);创建大小为size的缓冲器,ByteArrayOut

15、putStream的一些常用方法: int size():返回此流缓冲区的大小。 byte toByteArray():生成一个新的字节数组,并将流的内容复制到此字节数组。 String toString():将流的内容转换为String对象。,【例8.8】程序读入文件ByteIO.java,将其内容写入内存中(一个字节数组),接着转换为String对象。,字节流,import java.io.*; import java.util.*; public class ByteIO public static void main(String args) tryFile inFile=new Fi

16、le(“ByteIO.java“); FileInputStream inData=new FileInputStream(inFile); ByteArrayOutputStream dataArray=new ByteArrayOutputStream(); int data; while(data=inData.read()!=-1)dataArray.write(data); inData.close(); String dataStr=dataArray.toString(); catch(IOException e)System.out.println(e.getMessage(); ,字节流,缓冲区流BufferedInputStream和BufferedOutputStream,BufferedInp

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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