Java程序设计课件(高晓黎)第15章输入输出流和文件操作.ppt
《Java程序设计课件(高晓黎)第15章输入输出流和文件操作.ppt》由会员分享,可在线阅读,更多相关《Java程序设计课件(高晓黎)第15章输入输出流和文件操作.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 2 3本章知识重点3132输入输出流的分类33java.io包中流的体系结构34目录和文件管理涉及到的类输入输出流的概念 4本章知识难点33java.io包中的输入输出流类3132目录和文件管理涉及到的类流输入及输出的一般过程 5输入输出流的分类 Java 流的概念 Java使用流(stream)来执行输入输出(I/O)的功能,流是一 种数据的源头和目的之间的通信途径 标准输入输出 Java系统事先定义好两个流对象,分别与系统的标准输入 和标准输出相联系,它们是System. in和System.out System是Java中一个功能很强大的类,利用它可以获得很 多Java运行时的系统信息
2、。 3132【例15.1】 6输出流输出流(程序写出数据程序写出数据) 输入流输入流(程序读入数据程序读入数据) Java中根据流操作的种类可分为:字节流和字符流根据流的方向,流可分为两类:输入流和输出流Java流类体系结构流类体系结构1 Java流类体系结构流类体系结构2Java流类体系结构流类体系结构3 Java流类体系结构流类体系结构4 Java流的概念输入输出流的分类 7目录和文件管理目录和文件管理 32文件名的处理文件名的处理 31FileFile类类 文件或目录的生成文件或目录的生成 文件属性测试文件属性测试 普通文件信息和工具普通文件信息和工具 目录操作目录操作 public F
3、ile(String path):如果path是实际存在的路径,则该File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。public File(String path,String name):path是路径名,name是文件名(不可为空)。public File(File dir,String name):dir是路径名,name是文件名。String getName( ):得到一个文件的名称(不包括路径)。String getPath( ):得到一个文件的路径名。String getAbsolutePath( ):得到一个文件的绝对路径名。String getPa
4、rent( ):得到一个文件的上一级目录名。String renameTo(File newName):将当前文件名更名为给定文件的完整路径。【例15.2】 boolean exists( ):测试当前File对象所指示的文件或目录是否存在,若存在,返回True。boolean createNewFile():创建当前文件。boolean canWrite( ):测试当前文件是否可写。boolean canRead( ):测试当前文件是否可读。boolean isFile( ):测试当前文件是否是文件(不是目录)。boolean isDirectory( ):测试当前文件是否是目录,若为目录则
5、返回True。【例15.3】 long lastModified( ):得到文件最近一次修改的时间。long length( ):得到文件的长度,以字节为单位,若不存在,返回0。boolean delete( ):删除File对象代表的文件或目录,目录需为空。删除成功,返回True。boolean mkdir():生成一个由该对象指定的路径(新目录),若成功,返回True。boolean mkdirs():生成一个新的目录,包含子目录。若成功,返回true。boolean renameTo(File newName):将当前File对象所代表的路径名改为newName所代表的路径名。若成功,返
6、回true。String list():列出当前目录下的文件。File listFiles():得到该对象所代表的目录下的File对象数组。String toString():得到抽象路径表示法。【例15.4】 FileFile类的应用类的应用 【例15.5】 【例15.6】 8字节流字节流 缓冲区流缓冲区流BufferedInputStream和BufferedOutputStream 33顺序读/写文件(FileInputStream与FileOutputStream) 31ByteArrayInputStream和ByteArrayOutputStream 32 9顺序读/写文件(Fil
7、eInputStream与FileOutputStream) FileInputStream类从磁盘文件读取数据。常用的构造方法有:FileInputStream(String name):打开文件name用来读取数据。如:FileInputStream f =new FileInputStream(c:/test.txt);FileInputStream(File file):打开文件file用来读取数据。如:File f=new File(c:/test.txt); FileInputStream f1=new FileinputStream(f);将FileDescriptor对象作为其
8、参数。如:FileDescriptor() fd=new FileDescriptor(); FileinputStream f2=new FileInputstream(fd);FileOutputStream类创建文件(如果文件不存在),并将数据写入文件。FileOutputStream类常用的构造方法有:FileOutputStream(String name):打开文件name用来写入数据。如:FileOutputStream f=new FileOutputStream (c:/test.txt);FileOutputStream(File file):打开文件file用来写入数据。
9、如:File f =new File(c:/test.txt);FileOutputStream f1=new FileOutputStream (f);FileOutputStream(String name,Boolean append):打开文件name用来写入数据,若append为true,则写入的数据会加到原有文件后面,否则,覆盖原有的文件。如:FileOutputStream f =new FileOutputStream(c:/test.txt,true);将FileDescriptor对象作为其参数。FileDescriptor() fd =new FileDescriptor
10、();FileOutputStream f =new FileOutputStream(fd);【例例15.7】 字节流字节流 10ByteArrayInputStream和ByteArrayOutputStream 字节流字节流 ByteArrayInputStream 将字节数组用作源,并在该数组中执行读操作它有两种构造方法。第一种构造方法将字节数组作为参数。ByteArrayInputStream(byte buffer):生成一个字节数组的输入流,并指定一个字节数组buffer为此输入流的流缓冲区。如:ByteArrayInputStream b =new ByteArrayInput
11、Stream(buf);另外一种构造方法有助于从指定的字节数组来创建ByteArrayInputStream。ByteArrayinputStream b =new ByteArrayinputStream(buf,off,len);其中off 是要读取的第一个字节的偏移,len 是要读取数组的字节数;ByteArrayOutputStream有2种构造方法ByteArrayOutputStream():生成一个字节数组的输出流,其缓冲区的默认初始大小为32字节,若有需要,缓冲区的大小会随之增加。如:ByteArrayOutPutStream b=new ByteArrayOutputStre
12、am();ByteArrayOutputStream(int size):创建32个自己的缓冲器用于储存数据,但分配size字节的初始大小给此缓冲区。如:ByteArrayOutputStream b1=new ByteArrayOutputStream(size);创建大小为size的缓冲器ByteArrayOutputStream的一些常用方法:int size():返回此流缓冲区的大小。byte toByteArray():生成一个新的字节数组,并将流的内容复制到此字节数组。String toString():将流的内容转换为String对象。【例15.8】 11字节流字节流 缓冲区流缓
13、冲区流BufferedInputStream和BufferedOutputStream BufferedInputStream类的构造方法和方法:BufferedInputStream(InputStream in):构造一个BufferedInputStream。BufferedInputStream(InputStream in, int size):构造一个具有给定的缓冲区大小的BufferedInputStream。int available():得到可以从这个输入流读取的字节数。void close():关闭流。void mark(int readlimit):在这个输入流的当前位置
14、做标记。boolean markSupported():检查这个输入流是否支持mark和reset方法。int read():读取数据的下一个字节。int read(byte b, int off, int len):从这个字节输入流的给定偏移量处开始读取字节,存储到给定的字节数组。void reset():将缓冲区重新设置到加标记的位置。long skip(long n):跳过n个字节的数据。BufferedOutputStream类的构造方法和方法:BufferedOutputStream(OutputStream out):构造一个BufferedOutputStream。Buffere
15、dOutputStream(OutputStream out, int size):构造一个具有给定的缓冲区大小的BufferedOutputStream。void flush():刷新这个流。void write(byte b, int off, int len):将给定的字节数组写到这个缓冲输出流。void write(int b):将给定的字节写到这个缓冲输出流。 【例15.9】 12字符流字符流 31ReaderReader和和Writer Writer 32InputStreamReaderInputStreamReader和和OutputStreamWriter OutputStr
16、eamWriter 33FileReader FileReader 34FileWriter FileWriter 35BufferedReaderBufferedReader和和BufferedWriter BufferedWriter 36CharArrayReaderCharArrayReader和和CharArrayWriterCharArrayWriter 13字符流字符流InputStreamReader和OutputStreamWriter InputStreamReader类的构造方法和方法:InputStreamReader(InputStream in):构造一个Input
17、StreamReader。InputStreamReader(InputStream in, String enc):使用命名的字符编码构造一个InputStreamReader。void close():关闭流。String getEncoding():得到字符编码的名称。int read():读取一个字符。int read(char cbuf, int off, int len):将字符读到数组中。boolean ready():如果这个流已准备好,返回True。OutputStreamWriter类的构造方法和方法:OutputStreamWriter(OutputStream out)
18、:构造一个OutputStreamWriter。OutputStreamWriter(OutputStream out, String enc):使用命名的字符编码构造一个OutputStreamWriter。void close():关闭流。void flush():刷新流。String getEncoding():得到这个流使用的字符编码的名称。void write(char cbuf, int off, int len):写字符数组的一部分。void write(int c):写一个字符。void write(String str, int off, int len):写一个字符串的一部
19、分。【例15.10】 14字符流字符流FileReader FileReader(File file):构造一个FileReader。FileReader(FileDescriptor fd):从一个文件描述符构造一个FileReader。FileReader(String filename):从一个文件名构造一个FileReader。【例15.11】 15字符流字符流FileWriter FileWriter(File file):从File对象构造一个FileWriter。FileWriter(FileDescriptor fd):从文件描述符构造一个FileWriter。FileWrit
20、er(String filename):从文件名构造一个FileWriter。FileWriter(String filename, boolean append):构造一进行附加的FileWriter。【例15.12】 16字符流字符流BufferedReader和BufferedWriter 这两个类对应的流使用了缓冲,能大大提高输入输出的效率。这两个也是过滤器流,常用来对InputStreamReader和OutputStreamWriter进行处理。【例15.13】 17字符流字符流CharArrayReader和CharArrayWriter CharArrayReader类的构造方
21、法和方法如下:CharArrayReader(char buf):从给定的字符数组构造一个CharArrayReader。CharArrayReader(char buf, int offset, int length):同上。void close():关闭流。void mark(int readAheadLimit):在流中的当前位置加标记。boolean markSupported():如果这个流支持mark操作,那么返回True。int read():读取一个字符。int read(char b, int off, int len):将字符读入数组的一部分。boolean ready()
22、:检查这个流是否已经准备好被读取。void reset():将流重设到最近的标记。long skip(long n):跳过n个字符。CharArrayWriter类的构造方法和方法如下:CharArrayWriter():构造一个CharArrayWriter。CharArrayWriter(int initialSize):构造一个具有给定初始大小的CharArrayWriter。void close():关闭流。void flush():刷新流。void reset():重设流。int size():得到缓冲区的当前大小。char toCharArray():得到输入数据的副本。Strin
23、g toString():将输入数据转换为字符串。void write(char c, int off, int len):将字符写到缓冲区中。void write(int c):将一个字符写到缓冲区中。void write(String str, int off, int len):将字符串的一部分写到缓冲区中。void writeTo(Writer out):将缓冲区的内容写到另一个字符流中。【例15.14】 18文件的随机访问文件的随机访问 31在java中,类RandomAccessFile 提供了随机访问文件的方法RandomAccessFile(File file, String
24、mode):构造一个随机访问文件流,file为被访问的文件对象,mode是用来指定存取的模式,mode可以为r(读)、w(写)或rw(读写)。RandomAccessFile(String name,String mode):构造一个随机访问文件流,以便访问由字符串name指定名字的文件,mode参数使用同上 32RandomAccessFile类提供的用来读取某种基本数据类型的数据或字符串的方法 boolean readBoolean()byte readByte()char readChar()double readDouble()float readFloat()int readInt(
25、)long readLong()short readShort()String readLine() 33RandomAccessFile类提供的用来向文件中写入某种基本类型的数据或字符串的方法 void writeByte(byte b)void writeBytes(String s)void writeChar(char c)void writeChars(String s)void writeDouble(double d)void writeFloat(float f)void writeInt(int i)void writeLong(long l)void writeShort(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 课件 高晓黎 15 输入输出 和文 操作
限制150内