输入流与输出流.ppt
《输入流与输出流.ppt》由会员分享,可在线阅读,更多相关《输入流与输出流.ppt(60页珍藏版)》请在三一办公上搜索。
1、第八章 输入与输出流,1.从键盘上接收数据,输出到屏幕上。或者把键盘上接收的数据输出到 数据文件中。2.从数据文件读取数据,输出到屏幕上。或者把从一个数据文件的读取的数据输出到另一个数据文件中。(介绍数据文件的内容及产生过程。何谓读取和写入)3.把正在运行的java程序所产生的数据输出到屏幕上,或写入到一个数据文件中。,程序,键盘,数据文件,数据文件,屏幕,第八章 输入与输出流,综上所述,程序是数据处理中心。无论是从键盘上读取数据或者从数据文件中读取数据都是由程序决定的。把程序中的数据输出到屏幕上或者输出到数据文件中都是由程序决定的。,程序,键盘,数据文件,数据文件,屏幕,8.1 流的概念 输
2、入与输出流(I/O流)(1)输入流:把键盘上输入的数据或者是把数据文件中的数据 读入正在运行的程序中。(网络)(2)输出流:把正在运行的程序中的数据输出到屏幕上或者 输出到数据文件中。,第八章 输入与输出流,输入流,输出流,8.1 流的概念注意:输入与输出过程中,数据的流动称为输入与输出流。输入流:键盘或数据文件是数据源,而运行的程序数据流动的目的地。输出流:运行的程序是数据源,而屏幕或数据文件是数据流动的目的地。Java所有的输入与输出操作都要通过I/O包中的一些流类来实现。字节流 输入流或输出流以字节作为特定的处理单位。字符流 输入流或输出流以字符作为特定的处理单位。,第八章 输入与输出流
3、,不论数据从哪里来,到哪里去。读或写数据的步骤和方法大体上都是一样的:进行读操作意味着需要建立输入流的数据源。数据源是键盘或者是文件,输入流的目的地一定是正在运行的程序中。进行写操作意味着需要建立输出流的目的地。目的地是屏幕或者是数据文件,输出流的数据源一定是正在运行的程序产生的数据。,第八章 输入与输出流,8.1 流的概念字符流类:专门用于字符数据字节流类:用于一般目的,第八章 输入与输出流,10.1 File类,首先讨论节的内容,如何使用File类创建对象。对象可以是文件对象,也可以是目录对象。(1)使用一个存在的文件创建一个文件对象;File f=new File(Example10_1
4、.java);当前目录下已经存在文件:Example10_1.java 这时引用变量可以使用节中提供的对文件操作方法。例如:f.getName()获得文件的名称等。例题10.1(2)使用一个不存在的文件名创建一个文件对象 File f=new File(new.txt);当前目录下已经不存在文件:new.txt 这时必须使用 f.createNewFile();才能在当前目录下创建指定的文件。然后引用变量可以使用节中提供的对文件操作方法。例如:f.getName()获得文件的名称等。例题10.1,第八章 输入与输出流,10.1.1 使用File类的方法获取文件的属性 public String
5、 getName()获取文件的名字。public boolean canRead()判断文件是否是可读的。public boolean canWrite()判断文件是否可被写入。public boolean exits()判断文件是否存在。public long length()获取文件的长度(单位是字节)。public String getAbsolutePath()获取文件的绝对路径。public String getParent()获取文件的父目录。public boolean isFile()判断文件是否是一个普通文件,而不是目录。public boolean isDirectroy(
6、)判断文件是否是一个目录。public boolean isHidden()判断文件是否是隐藏文件。public long lastModified()获取文件最后修改的时间。例题:10.1,第八章 输入与输出流,10.1.2 目录 用File 类还可以创建目录对象。目录可以是一个已经存在的目录,也可以是一个不存在的目录。(1)File dir=new File(.);创建一个目录对象,该对象表示当前目录。File dir=new File(“c:tt);若c盘的根目录下存在子目录tt 即:c:tt 上述语句执行后,将创建一个目录对象dir表示c:tt(4)File dir=new File(
7、c:ss);若c盘的根目录下不存在子目录ss 即:c:ss 必须执行语句:dir.mkdir();才能创建目录c:ss 这样目录对象dir表示c:ss 例题:文件输入与输出 Example10_1_1.java,第八章 输入与输出流,10.1.2 目录 当目录对象指向已经存在的目录。可以使用下列方法列出目录中的文件:public String list()用字符串形式返回目录下的全部文件。public File listFiles()用File对象形式返回目录下的全部文件。public String list(FilenameFilter obj)用字符串形式返回目录下的指定类型的所有文件。p
8、ublic File listFiles(FilenameFilter obj)用File对象形式返回目录下的指定类型所有文件。上述两方法的参数FilenameFilter是一个接口,该接口有一个方法:public boolean accept(File dir,String name);例题:文件输入与输出 Example10_1_1.java Example10_2.java,第八章 输入与输出流,10.1.4 使用Runtime 类运行可执行文件 用Runtime 类声明一个对象(Runtime类在java.lang包)Runtime ec;然后使用该类的getRuntime()静态方法
9、创建这个对象:ec=Runtime.getRuntime();ec可以调用exec(String command)方法打开本地机的可执行文件或执行一个操作。项目:可执行文件 Example10_3.java,第八章 输入与输出流,10.3-10.4 文件字节流与文件字符流 java.io包提供了大量的流类:InputStream抽象类的子类创建的流对象称作字节输入流对象;OutputStream抽象类的子类创建的流对象称作字节输出流对象;read方法的格式如下:public void read(byte b);public void read(byte b,int off,int len);w
10、rite方法的格式如下:public void write(byte b);public void write(byte b,int off,int len);作为字节流输入对象的文件,采用read方法按字节读入到程序中;作为字节流输出对象的文件,采用write方法按字节把程序的数据输出到字节流输出对象的文件中;,第八章 输入与输出流,10.3-10.4 文件字节流与文件字符流 java.io包提供了大量的流类:Reader抽象类的子类创建的流对象称作字符输入流对象;Writer抽象类的子类创建的流对象称作字符输出流对象。read方法的格式如下:public void read(char b)
11、;public void read(char b,int off,int len);write方法的格式如下:public void write(char b);public void write(char b,int off,int len);作为字符流输入对象的文件,采用read方法按字符读入到程序中;作为字符流输出对象的文件,采用write方法按字符把程序的数据输出到字符流输出对象的文件中;,第八章 输入与输出流,10.5 缓冲流 Reader抽象类的子类创建的流对象与BufferedReader类结合使用后,创建的对象称作缓冲输入流对象,可以采用如下方法:readLine()Buffe
12、redReader流对象从文件中读取文本行;Writer抽象类的子类创建的流对象和BufferedWriter类结合使用后,创建的对象称作缓冲输出流对象,可以采用如下方法:write(String s,int off,int len)/BufferedWriter流对象把字符串s写到文件中。newLine();/BufferedWriter流对象向文件写入一个回行符。,第八章 输入与输出流,10.6 随机流 使用RandomAccessFile类来创建一个随机访问文件流。RandomAccessFile类创建的流的指向既可以作为源也可以作为目的地。构造方法:RandomAccessFile(S
13、tring name,String mode);RandomAccessFile(File file,String mode);相关方法:seek(long a)定位RandomAccessFile流的读写位置 getFilePointer()获取流的当前读写位置 writeInt(int xi)writeFloat(float xi)/写入随机文件中 readInt()readFloat()/从随机文件中读取数据 readLine()若读入数据时,按字符串读入数据,可以按行读入字符串。可能出现乱码,对字符串对象使用重新编码语句:byte b=str.gerByte(“iso-8859-1”)
14、;/重新编码后的字符串存入字节数组中 str=new String(b);/然后转换为字符串对象。,第八章 输入与输出流,10.7 数组流 这节内容是:如何把程序中的一个字节数组中的数据或一个字符数组中的数据写入缓 冲区中;还有,把存放在缓冲区中的数据读入一个字节数组中的数据或一个字符数组中。1字节数组流 字节数组输出流ByteArrayOutputStream类可以使用下列构造方法 创建对象:ByteArrayOutputStream()/将在内存中开辟默认为32字节的缓冲区。ByteArrayOutputStream(int size)/将在内存中开辟指定字节的缓冲区。例如:ByteArr
15、ayOutputStream outByte=new ByteArrayOutputStream();把要输出到缓冲区的数据放入一个字节数组中,然后调用下列方法:write(byte b);将字节数组中的数据存入缓冲区中。例如:byte byteContent=国庆60周年.getBytes();outByte.write(byteContent);,第八章 输入与输出流,10.7 数组流 1字节数组流 字节数组输入流ByteArrayInputStream类可以使用下列构造方法创建对象:ByteArrayInputStream(byte buf);/形参是一个字节数组,代表一个已经存在的缓冲
16、区。/指定要读入数据的缓冲区。当前内存中可能有若干个缓冲区。例如:ByteArrayInputStream inByte=new ByteArrayInputStream(outByte.toByteArray();/outByte.toByteArray()是一个字节数组,代表一个已经存在的缓冲区。该字节数组存放了缓冲区所有数据。public int read();/顺序地从缓冲区中读出一个字节 public int read(byte b,int off,int len);/顺序地从源中读出参数len指定的字节数 例如:byte backByte=new byteoutByte.toByt
17、eArray().length;inByte.read(backByte);/把缓冲区中的数据读入字节数组backByte中,第八章 输入与输出流,10.7 数组流 2字符数组流 字符数组输出流CharArrayWriter类可以使用下列构造方法 创建对象:CharArrayWriter()/将在内存中开辟默认为32字节的缓冲区。例如:CharArrayWriter outChar=new CharArrayWriter();把要输出到缓冲区的数据放入一个字符数组中,然后调用下列方法:write(char b);将字符数组中的数据存入缓冲区中。例如:char charContent=中秋快乐.
18、toCharArray();outChar.write(charContent);,第八章 输入与输出流,10.7 数组流 2字符数组流 字符数组输入流CharArrayReader类可以使用下列构造方法创建对象:CharArrayReader(char buf);/形参是一个字符数组,代表一个已经存在的缓冲区。指定要读入数/据的缓冲区。当前内存中可能有若干个缓冲区。例如:CharArrayReader inChar=new CharArrayReader(outChar.toCharArray();/outByte.toCharArray()是一个字符数组,代表一个已经存在的缓冲区。该字符数
19、组存放了缓冲区所有数据。public char read(char w);/顺序地从缓冲区中读入数据到字符数组w中。例如:char backchar=new charoutByte.toCharArray().length;inChar.read(backchar);/把缓冲区中的数据读入字符数组backchar中。,第八章 输入与输出流,10.8 数据流 FileOutputStream类和DataOutputStream类配合使用,把程序中的数据写入数据文件更加方便。例如:File file=new File(apple.txt);FileOutputStream fos=new File
20、OutputStream(file);DataOutputStream outData=new DataOutputStream(fos);可以调用DataOutputStream类中的相关方法:例如:outData.writeInt(100);outData.writeLong(123456);outData.writeFloat(3.1415926f);outData.writeDouble(987654321.1234);outData.writeBoolean(true);outData.writeChars(How are you doing);,第八章 输入与输出流,10.8 数据
21、流 FileInputStream类和DataInputStream类配合使用,把数据文件中的数据读入程序中更加方便。例如:File file=new File(apple.txt);FileInputStream fis=new FileInputStream(file);DataInputStream inData=new DataInputStream(fis);可以调用DataInputStream类中的相关方法:例如:System.out.println(inData.readInt();/读取int数据 System.out.println(inData.readLong();/读
22、取long数据 System.out.println(+inData.readFloat();/读取float数据 System.out.println(inData.readDouble();/读取double数据 System.out.println(inData.readBoolean();/读取boolean数据 char c;while(c=inData.readChar()!=0)/读取字符数据,采用循环结构。0表示空字符。System.out.print(c);,第八章 输入与输出流,10.9 对象流 FileOutputStream类和ObjectOutputStream类配合
23、使用,把程序中的一组对象数据写入数据文件。例如:File file=new File(television.txt);FileInputStream fileIn=new FileInputStream(file);ObjectInputStream objectIn=new ObjectInputStream(fileIn);可以调用ObjectInputStream类中的相关方法:例如:TV xinfei=(TV)objectIn.readObject();objectIn.close();注意:从数据文件读回的对象是输入数据文件的对象的一个克隆对象。,第八章 输入与输出流,10.9 对象
24、流 FileInputStream类和ObjectInputStream类配合使用,把数据文件中的一组对象读入程序中。例如:File file=new File(apple.txt);FileInputStream fis=new FileInputStream(file);DataInputStream inData=new DataInputStream(fis);可以调用DataInputStream类中的相关方法:例如:System.out.println(inData.readInt();/读取int数据 System.out.println(inData.readLong();/读
25、取long数据 System.out.println(+inData.readFloat();/读取float数据 System.out.println(inData.readDouble();/读取double数据 System.out.println(inData.readBoolean();/读取boolean数据 char c;while(c=inData.readChar()!=0)/读取字符数据,采用循环结构。0表示空字符。System.out.print(c);,第八章 输入与输出流,字节流类:用于一般目的。输入流或输出流以字节作为特定的处理单位。字节流类是由一组具有继承关系的类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 输入 输出
链接地址:https://www.31ppt.com/p-6232779.html