资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,I/O,流,标准,输入输出,输入输出,行,言,输入输出,I/O软件层,设备驱动程序,设备驱动程序,设备驱动程序,设备驱动程序,设备驱动程序,OS,独,立,于,设,备,的,I/O,层,java.io,提供,I/O层,(类层),应用,程序,应用,程序,应用,程序,java.io的核心,文件(File类),各种文件系统提供的基本服务一样,但实现细节互不兼容。,解决java程序与文件系统的沟通。,流,线性的顺序的输入输出数据流,读输入流,写输出流,I/O 流类,标准文件类,:File,File类的对象是文件系统中的一个目录或文件的抽象表示。,File类对象描述文件路径、名字、长度、可否读写等属性,可用来命名文件、查询文件属性、对目录进行操作,但不读写文件。,上述操作都是以独立于系统的方式进行。,通过File类对象可以对操作系统的文件进行管理,体现了跨平台不同文件的统一管理,File类方法获取文件属性,判断目标是否存在,public boolean exists(),判断是文件还是目录,public boolean isFile();,public boolean isDirectory();,获取文件名称或整个路径,public String getName()仅返回文件名,public String getPath(),返回整个路径字符串,获取文件长度,public long length(),获取文件读写属性,public boolean canRead(),public boolean canWrite(),列出目录中的文件,public,String list(),public,File listFiles(),File类方法文件/目录操作,重命名,public boolean renameTo(),删除文件或目录 public boolean delete();,创建目录 public boolean mkdir(),创建目录及父目录(如果需要的话),public boolean mkdirs(),创建临时文件,public static File createTempFile(文件名,后缀),throws IOException,deleteOnExit(),1、2,文件I/O类:RandomAccessFile,视文件如同一个字节类型数组,数组下标即文件指针。读写操作都会移动指针。,构造函数,RandomAccess file,String mode),RandomAccess name,String mode),文件I/O类:RandomAccessFile,写文件,writeInt(int v),写整型数 4个字节,高字节在前,writeBoolean(boolean v),一个字节,0或1,writeUTF(String str),写一字符串,前两个字节标明字符串字节长度,文件I/O类:RandomAccessFile,读文件,byte readByte()读一字节,char readChar()读一字符(Unicode码2个字节),double readDouble()读双精度数(8个字节),String readUTF()读一个字符串。,readLine()读一行文本(对每一个字节,配上一个置0高字节,构成一个双字节字符。不支持Unicode码,3 方法测试,4 学生信息,InputStream输入流,管理字节(适于读取面向字节的数据),是所有表示输入字节流类的父类(抽象类),三个基本方法:,abstract int read(),从输入流中读下一个字节。,int read(byteb),从输入流中读若干个字节到数组中。,int read(byte b,int off,int len),从输入流中读len个字节到数组中。off是写入数组的位置(位移)。,ByteArrayInputStream,(byte,数组),(,文件路径名,或,File,对象),ObjectInputStream,(,Inputstream,in),PipedInputStream,(,PipedOutputStream,pipe),SequenceInputStream,表示其他输入串的逻辑连接,FilterInputStream,(,其他输入流)定义了子类对流的进一步处理功能。,BufferedInputStream,(,InputStream,in),DataInputStream,(,InputStream,in),各种数据读入,InputStream输入流的子类,这些子类的构造函数都可以用某种方式指定其数据源。,加强输入流,对InputStream类进行功能扩充,OutputStream输出流,抽象类:是所有表示输出字节流类的父类。,功能:接受要输出的字节并将它送往目的地。,方法:,write(int b)往输出流写一个字节,write(byteb)将字节数组数据写入输出流。,flush()刷新输出流,并使缓冲区中的数据写出。,close()关闭输出流,释放与之相连的系统资源。,两种流类,node stream,对指定的地方(磁盘文件、内存 等)读/写,filter stream,一个filter 流使用node流作为输入或输出。,目,的,地,数,据,源,基本流类node流,infile =,new(“old.dat”);,outfile=,new(“new.dat”);,基本流类filter流,BufferedInputStream BufferedOutputStream,增加I/O操作的有效性,DataInputStream DataOutputStream,可以读写Java基本类型的数据,byte readByte()void writeByte(byte),long readLong()void writeLong(long),double readDouble()void writeDouble(double),使用I/O流读写文件,输出,DataOutputStream out=,new DataOutputStream(new(test3),写文件:out.writeUTF(wang hong);,out.writeFloat(485.2F);,输入,DataInputStream in=,new DataInputStream(new(test3);,读文件:in.readUTF(),in.readFloat(),字符流-Reader类,是所有读取字符流类的父类抽象类(面向Unicode字符操作)Java使用Unicode码表示字符和字符串。,方法:,boolean ready()输入字符流是否可读,int read()读取一个字符,int read(char cbuf)读取一串字符(到字符数组),long skip(longn)跳过n个字符,mark(intreadAheadLimit)在当前位置做一标记,reset()将读取位置恢复到标记处,close()关闭字符流,Writer类,是所有表示输出字符流类的父类(抽象类)。,功能:接受要输出的字符并将它送往目的地。,方法:,write(String str),write(char cbuf),flush(),close(),Writer类的子类,CharArrayWriter(),toCharArray()and toString().,StringWriter()方法,toString,PipedWriter(PipedReader),BufferedWriter(Write out)提高I/O效率,方法:write()写字符或字符串,PrintWriter(OutputStream类或Writer类对象),方法:print println 实现各种类型数据的输出,字节流,字符流,写字符,OutputStreamWriter(OutputStream out),(File对象或文件名),文件读写(文本),输入,BufferedReader fin=new BufferedReader(,new(test.txt);,读文件 fin.readln(),输出,PrintWriter fout=new PrintWriter(,new(test.txt),true);,或:PrintWriter fout=new PrintWriter(,new BufferedWriter(new(“test.txt);,写文件 fout.println()flush()close(),System类及标准输入输出,BufferedReader stdin=new BufferedReader(,new InputStreamReader(System.in);,stdin.read()读一个字符,String readLine()读一行,read(charcbuf,intoff,intlen)将指定数量(len)字符读到字符数组中的指定位置(off),InputStreamReader 没有readLine()方法,BufferedReader(Reader)构造函数,5,输入输出流例-对象流,ostream=new(t.tmp);,ObjectOutputStream p=new ObjectOutputStream(ostream);,p.writeInt(12345);,p.writeObject(Today);,p.writeObject(new Date();,p.flush();,ostream.close();,管道与流,标准输入/输出,改道 标准输入/输出 (),管道 将一个程序的标准输出作为另一个程序的标准输入 (|),sort 对输入数据排序,然后输出,more 分页显示,dir|sort|more,进程2,PipedInputStream,进程1,PipedOutputStream,7,小结,java.io包中的流类及读入器/写出器,连接流到具体的数据源或数据目的地。,加强流的处理功能。,ImputStream,来源:Byte,String,加强(Buffered),OutputStream(类似),Reader/Writer,低级读入器从各种源取得原始数据,高级过滤读入器组织低级读入器传递的数据。,低级写出器将字符传给各自目标,高级写出器将组织好的字符发送给其他写出器。,
展开阅读全文