《JAVA编程技术基础课件第十章输入与输出》由会员分享,可在线阅读,更多相关《JAVA编程技术基础课件第十章输入与输出(43页珍藏版)》请在金锄头文库上搜索。
1、第十章 输入与输出输输入入和和输输出出是是程程序序设设计计语语言言的的一一项项重重要要功功能能,是是程程序序和和用用户户之之间间沟沟通通的的桥桥梁梁。方方便便易易用用的的输输入入与与输输出出使使程程序序和和用用户户之之间间产产生生良良好好的的交交互。互。输输入入功功能能使使程程序序可可以以从从外外界界,如如键键盘盘、磁磁盘盘文件等接收信息。文件等接收信息。输输出出功功能能使使程程序序可可以以将将运运算算结结果果等等信信息息传传递递给外界,如屏幕、打印机、磁盘文件等。给外界,如屏幕、打印机、磁盘文件等。Java程序不能直接操纵程序不能直接操纵I/O设备,而是在设备,而是在程序和设备之间加入了一个
2、中间介质,程序和设备之间加入了一个中间介质,这就是流。这就是流。流是数据传输的抽象表达,与具体设备流是数据传输的抽象表达,与具体设备无关。程序一旦建立了流,就可以不用无关。程序一旦建立了流,就可以不用理会起点或终点是何种设备。理会起点或终点是何种设备。建立流实际上就是建立数据传输通道,建立流实际上就是建立数据传输通道,将起点和终点连接起来。将起点和终点连接起来。图示图示Java提供了专用于输入输出功能的包提供了专用于输入输出功能的包java.io,其中包含,其中包含5个非常重要的类,几个非常重要的类,几乎所有与输入输出有关的类都继承了这乎所有与输入输出有关的类都继承了这5个类,即:个类,即:I
3、nputStream、Outputstream、Reader、Writer和和File。利用这些类,。利用这些类,Java程序可以很方便地实现多种输入输程序可以很方便地实现多种输入输出操作和复杂的文件与目录管理。出操作和复杂的文件与目录管理。 10-1 输入输出类库输入输出类库流根据运动方向分为输入流 输出流流根据数据类型分为字节流(位流),二进制数 字符流 , Unicode码处理字节流:输入流InputStream输出流OutputStream,读写二进制数处理字符流:输入流Reader和输出流Writer读写字符(Unicode)抽象类1、InputStream方法:public int
4、 read()读取输入流的下一个字节public int read(byte b)将输入流读取到字节数组中public long skip(long n)从输入流中跳过n个字节public void mark()在指针位置做个标记public void reset()将指针移动到标记位置public void close()关闭输入流释放资源InputStream子类读 取文件输入流建立可过滤的输入流(抽象类)具备数据类型或格式转换功能具备缓冲功能的输入字节类2、OutputStream方法public void write(int b)将整数b的低8位写入输出流public void wri
5、te(byte b) 将字节数组写入输出流public void flush()强制将缓冲区中的数据写入外设public void close()关闭输出流释放资源OutputStream子类写入文件输出流建立可过滤的输出流(抽象类)提供流的格式化输出功能具备数据类型或格式转换功能具备缓冲功能的输出字节类3、Reader方法:public int read()读取输入流的下一个字符字符public int read(char ch)将输入流读取到字符数组中public long skip(long n)从输入流中跳过n个字符public void mark()在指针位置做个标记public v
6、oid reset()将指针移动到标记位置public void close()关闭输入流释放资源Reader子类读取输入流到缓冲区读取字节流并转换为字符流从文件中读入字符流4、Writer方法public void write(int c)将整数c的低16位写入输出流public void write(char ch) 将字符数组写入输出流public void flush()强制将缓冲区中的数据写入外设public void close()关闭输出流释放资源Writer子类将格式化对象写入文本输出流将字符数据写入缓冲区将字符流转换为字节流输出向文件中写入字符流10-2 标准输入输出 Jav
7、a预定义了3个流对象分别表示标准输出设备,标准输入设备,标准错误设备System.out System. in System.errSystem类所有属性和方法都是静态的(static)System. In属于InputStream类,对应:键盘System.err属于PrintStream类,对应:屏幕例例10-1从键盘输入数据StandardIn1.java用trycatch改写此例StandardIn12.java例10-1从键盘输入多个数据StandardIn11.java由于键盘具有缓冲功能,可以一次输入多个字符,暂存在缓冲区中,供read()方法一次一个字节(字符)逐个读取例例10
8、-2利用read()方法暂缓程序运行StandardIn2例例10-3输入字符串StandardIn3.javareadline()方法是读入字符串,是BufferedReader类的方法例5-4排序ArraySort.java编写一个程序,从键盘输入一个字符串,统计其中元音字母a,e,i,o,u出现的次数。StandardIn4.java10-2-2 标准输出System.out 属于PrintStream类对象,对应显示器PrintStream类的方法print()、println()输出各类数据10-2-3 标准错误运行或编译Java程序时,各种错误信息输出到标准错误设备,即显示器标准错
9、误设备用System.err表示,属于PrintStream类对象10-3 文件操作File类位于java.io包中不是流类,不负责数据的输入与输出专门用来管理磁盘文件和目录一个File类对象表示一个磁盘文件或目录其对象属性包含了如名称、长度、所含文件个数等等文件或目录的相关信息其方法可完成如创建、删除等文件目录常用管理操作10-3-1 建立File对象构造方法1File(String path) 2File(String path, String name) 3File(File dir, String name)Path是路径name是文件名或目录名dir是File对象,表示一个磁盘目录例
10、建立一个文件对象File file1=new File(“c:jdk1.3examplefile.txt )当前目录c:jdk1.3File file1=new File(“example file.txt ”);/相对路径例建立一个目录对象String path=“d:java”;File dir1=new File(path);或File dir1=new File(“d:java”);例构造方法2示例String path=c:jdk1.3example“;File file1=new File(path, oldfile.txt );File file2=new File(path,
11、newfile.txt );构造方法3示例File dir1=new File(c:javaexample“);File file1=new File(dir1, oldfile.txt );10-3-2 File对象的属性和操作1获得文件或目录名称与路径public String getName() public String getPath()2判断文件或目录是否存在pubic boolean exists()3获取文件长度public long length()4获取文件读写属性 public boolean canRead() public boolean canWrite() 5比较
12、文件或目录 public boolean equals(File file)/相同返回真6判断是文件还是目录 public boolean isFile()/是文件返回真 public boolean isDirectiry()/是目录返回真7重命名文件 public boolean renameTo(File file)8删除文件 public void delete()以字节方式写文件 例10-4以字节流方式写入文件 File2.javaFileOutputStream流类的构造方法FileOutputStream(String fileName)FileOutputStream(File
13、 file)异常:当路径不正确时,捕获处理异常FileNotFoundException以字节方式读文件例10-5以字节流方式读磁盘文件 File3.javaFileInputStream流类的构造方法FileInputStream(String fileName)FileInputStream(File file)异常:当路径或文件名不正确时,捕获处理异常FileNotFoundException向文件中读写各种类型数据类DataInputStream和DataOutputStream,用来读取和写入各种类型数据要向文件中读写各种类型数据,就要利用上面两个类类DataOutputStream
14、方法writeInt() 写入整数writeFloat()写入单精度数writeDouble()写入双精度数writeBoolean()写入布尔型数据异常:IOException FileNotFoundException类DataInputStream方法readInt() 读取整数readFloat()读取单精度数readDouble()读取双精度数readBoolean()读取布尔型数据异常:IOException FileNotFoundException例例10-6向磁盘文件写入各类数据 File4.java例例10-7从磁盘文件读取各类数据 File5.java磁盘文件读写过程总结
15、利用文件名字符串或File对象创建文件输入输出流对象读写读read()写write()或以FileInputStream和FileOutputStream为原始数据源,再套接上其他功能较强大的输入输出类完成文件的读写操作关闭文件以字符方式写文件FileWriter类构造方法FileWriter(String fileName)FileWriter(File file)异常:当路径不正确时,捕获处理异常FileNotFoundException方法write()或writeln()异常:IOExceptionBufferedWriter类可以减少程序和磁盘打交道的次数,提高运行效率使用方法:首先
16、为文件建立FileWriter对象,再为该FileWriter对象建立BufferedWriter类对象,写入操作将使用所建立的BufferWriter类对象。例例10-8以字符流方式写入文件 File8.java以字符方式读文件FileReader类构造方法FileReader(String fileName)FileReader(File file)异常:当路径不正确时,捕获处理异常FileNotFoundException方法read() 异常:IOExceptionBufferedReader类可以减少程序和磁盘打交道的次数,提高运行效率使用方法:首先为文件建立FileReader对象
17、,再为该FileReader对象建立BufferedReader类对象,通过使用所建立的BufferReader类对象的方法读取文件。例例10-9以字符流方式读取文件 File9.java将从键盘输入的字符串保存到文件中首先为System.in建立InputStreamReader类对象,现为该InputStreamReader类对象建立BufferedReader类对象,就可以通过BufferReader类对象从键盘接收字符数据,并实现缓冲功能。InputStreamReader类读入字节流数据,转换成字节符例例10-10以字符流方式向显示器输出File11.javaoutputStreamWriter类 读入字符流数据,将其转换成字节