第8章-File类与输入输出流课件.ppt
Java程序设计第八章 File类与输入输出流目录文件类File输入输出流缓冲流1 File类File类File类的对象是文件系统中的一个目录或文件的抽象表示。File类对象描述目录或文件的名字、长度、可否读写等属性,可用来重命名文件、查询文件属性等,但不能读写文件里的内容不能读写文件里的内容。通过File类对象可跨平台统一管理文件。File类构造方法File(Stringpath)文件(相对路径),移植性较好File f1=new File(“src/Hello.java);目录(绝对路径)File f2=new File(d:javasrc);File(Stringparent,Stringchild)File f3=new File(d:javasrc,a.java)File(Filedir,Stringname)File f4=new File(f2,“Hello.java);WindowsOthers/路径分隔符File.separatorFile类方法:属性判断是文件还是目录publicbooleanisFile();publicbooleanisDirectory();判断目标是否存在publicbooleanexists()获取文件长度publiclonglength()获取文件读写属性publicbooleancanRead()publicbooleancanWrite()File类方法:属性获取文件名称或整个路径publicStringgetName()仅返回文件名publicStringgetPath()返回整个路径字符串列出目录中的文件publicStringlist()File类方法:操作重命名publicbooleanrenameTo(Filenew);删除文件或目录publicbooleandelete();创建目录publicbooleanmkdir();创建目录及父目录(如果需要的话)publicbooleanmkdirs()例子FileDemo2 输入与输出流字节输入流字节输入流操作单元是字节InputStream是所有表示输入字节流类的父类(抽象类)方法:intread()从输入流中读一个字节。intread(byteb)从输入流中读若干个字节到数组中。longskip(longn)跳过n个字节。voidreset()回到最近一次做的标记处。voidclose()关闭输入流,释放与此输入流相连的系统资源。字节输入流的子类通过子类的构造方法参数指定其数据源。ByteArrayInputStream:byte数组FileInputStream:文件ObjectInputStream:对象PipedInputStream:管道FilterInputStream:定义了对流的进一步处理BufferedInputStream(InputStreamin):缓冲流DataInputStream(InputStreamin)数据读入字节输入流例子代码byte b=new byte8;FileInputStream in=new FileInputStream(Hello.txt);int n=in.read(b);in.close();字节输出流OutputStream:是抽象类,是所有表示输出字节流类的父类。功能:接受要输出的字节并将它送往目的地。方法:write(intb)往输出流写一个字节write(byteb)往输出流注入字节数据。close()关闭输出流,释放与之相连的系统资源。目的地ByteArrayOutputStream:byte数组FileOutputStream:文件ObjectOutputStream:对象PipedOutputStream:管道FilterOutputStream:定义了对流的进一步处理BufferedOutputStream:缓冲流DataOutputStream数据读入字节输出流的子类字节输出流例子代码byte b=Welcome,欢迎.getBytes();FileOutputStream outs=new FileOutputStream(Hello.txt);outs.write(b);outs.close();System类及标准输入输出System.out.println(Hello Java!);staticPrintStreamout标准输出流staticPrintStreamerr标准错误输出流staticInputStreamin标准输入流PrintStream是OutputStream的子类字符输入流ReaderReader:读取字符流的抽象类(Unicode字符操作)方法:intread()读取一个字符intread(charcbuf)读取一串字符(到字符数组)longskip(longn)跳过n个字符reset()将读取位置恢复到标记处close()关闭字符流Reader子类Reader有多个子类:CharArrayReader(charbuf)PipedReader(PipedWriter)StringReader(Strings)BufferedReader(Readerin)提供逐行读入方法:readLine字符输出流WriterWriter抽象类:是所有表示输出字符流类的父类。功能:接受要输出的字符并将它送往目的地。方法:write(Stringstr)write(charcbuf)flush()close()Writer类的子类字节流字符流写字符OutputStreamWriter(OutputStream out)FileWriter(File对象或文件名)Writer有多个子类CharArrayWriterStringWriterPipedWriterBufferedWriterPrintWriter字符输出流例子代码char b=Welcome,欢迎.toCharArray();FileWriter fw=new FileWriter(Hello.txt);fw.write(b);fw.close();3 缓冲流缓冲流BufferedReader的构造方法BufferedReader(Readerin)BufferedReader(Readerin,intsz)缓冲流BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in);InputStreamReader没有readLine()方法BufferedReader方法:intread()读一个字符StringreadLine()读一行read(charcbuf,intoff,intlen)将指定数量(len)字符读到字符数组中的指定位置(off)缓冲流例子代码FileReader fr=new FileReader(readme.txt);BufferedReader br=new BufferedReader(fr);String line=br.readLine();fr.close();br.close();4 小结File类FilegetName()delete()length()isFile()File类操作文件属性,不涉及文件内容字节操作InputSreamFileInputStreamread();/byteByteArrayInputSreamread();/byteDataInputStreamObjectInputStreamreadObject();/objectOutputStreamwrite();/bytewriteObject();/ObjectFile fileString filenamebyte bufInputStream inInputStream inReaderFileReaderread();/charBufferedReaderread();/charreadLine();/lineStringReaderread();/charWriterwrite();/bytewriteObject();/Object字符操作File fileString filenameReader inString s