Java面向对象程序设计 教学课件 ppt 作者 梁燕来 程裕强 第10章 Java IO

上传人:E**** 文档编号:89381705 上传时间:2019-05-24 格式:PPT 页数:32 大小:430KB
返回 下载 相关 举报
Java面向对象程序设计 教学课件 ppt 作者  梁燕来 程裕强 第10章 Java IO_第1页
第1页 / 共32页
Java面向对象程序设计 教学课件 ppt 作者  梁燕来 程裕强 第10章 Java IO_第2页
第2页 / 共32页
Java面向对象程序设计 教学课件 ppt 作者  梁燕来 程裕强 第10章 Java IO_第3页
第3页 / 共32页
Java面向对象程序设计 教学课件 ppt 作者  梁燕来 程裕强 第10章 Java IO_第4页
第4页 / 共32页
Java面向对象程序设计 教学课件 ppt 作者  梁燕来 程裕强 第10章 Java IO_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《Java面向对象程序设计 教学课件 ppt 作者 梁燕来 程裕强 第10章 Java IO》由会员分享,可在线阅读,更多相关《Java面向对象程序设计 教学课件 ppt 作者 梁燕来 程裕强 第10章 Java IO(32页珍藏版)》请在金锄头文库上搜索。

1、第10章 Java IO,主讲人: 程裕强,主要内容,了解Windows平台和Linux平台的文件系统 掌握File类的用法 掌握文件的跨平台操作 理解数据流概念 掌握InputStream的基本用法 掌握OutputSteam的基本用法 掌握文件上传的基本原理 了解字符流 了解Serializable接口,引言,计算机五大部件:运算器、控制器、存储器、输入设备(Input)、输出设备(Output)。 没有输出输出的程序是无意义的,输入输出(IO)是程序设计语言重要组成部分。 在Java SE中,相对而言Java IO部分是很繁琐乏味的、有难度的。 Java IO相关接口和类主要是面向文件操

2、作。在实际的软件项目中,我们通过程序直接操作文件的情况已经很少了,程序与数据库交互是重点。,10.1 文件,文件是计算机中一种基本的数据存储方式,每个文件以一个文件路径和文件名表示,其中文件名称一般采用“文件名.后缀名”格式表示。 Windows平台下,目录结构使用反斜杠“”来分割,文件名和路径名是不区分大小写的。 Linux和UNIX平台下的目录结构使用正斜杠“/”,文件名和路径名是区分大小写的。 相对路径指文件的部分路径。相对路径中有个两个重要的值:“.”表示当前目录,“”表示当前目录的上一级目录,也就是父目录。 在书写Windows下的路径时要注意,“”是Java语言的特殊字符,名称分隔

3、符“”需要通过转义字符“”来表示。,10.1.2 File类,File类是整个java.io包中一个独立的类,主要用来获取文件或目录的参数和操作。,10.1.3 Windows下的文件,例1:测试Windows平台下的File。 import java.io.*; public class CreateFile1 public static void main(String args) /.表示当前目录,是Windows平台下分割符 File file = new File(“filehello.txt“); try file.createNewFile(); / 创建新文件 catch (I

4、OException e) e.printStackTrace(); ,编译执行后,控制台没有输出信息,在ch10目录下的file子目录内可以发现新创建hello.txt文件。,10.1.4 Linux平台下的文件,例2:测试Linux平台下的File类。 import java.io.*; public class CreateFile1 public static void main(String args) /.表示当前目录,/是Linux平台下分割符 File file = new File(“file/hello.txt“); try file.createNewFile(); /

5、创建新文件 catch (IOException e) e.printStackTrace(); ,与Windows平台一样,编译执行后,控制台没有输出信息,在ch10目录下的file子目录内可以发现新创建hello.txt文件。,10.1.5文件跨平台性,由于Windows平台和Linux目录结构不同,Windows下的分割符是“”,在Java程序中要书写成“”,而Linux下的分割符是“/”,在Java程序中可以直接书写为“/”,这就给程序移植带来不方便。 事实上,File类提供了分隔符常量separator,可以解决这一问题。注意常量separator是小写的,这是由Java的历史造成的

6、,用户定义的常量名要大写。,例3:下面通过分隔符常量separator来改进上面程序。 import java.io.*; public class CreateFile2 public static void main(String args) /File.separator是名称分割符 File file=new File(“file“+File.separator+“hello2.txt“); try file.createNewFile(); / 创建新文件 catch (IOException e) e.printStackTrace(); ,在对应平台下的file目录下可以查看到刚

7、刚创建的hello2.txt文件。,例4:测试File类的跨平台操作。 import java.io.*; public class FileTest public static void main(String args) throws Exception File file=new File(“file“+File.separator+“hello.txt“); File file2=new File(“.“); System.out.println(“绝对路径:“+file.getAbsolutePath(); System.out.println(“绝对路径:“+file2.getAb

8、solutePath(); System.out.println(“文件名:“+file.getName(); System.out.println(“文件长度:“+file.length(); System.out.println(“文件可读:“+file.canRead(); System.out.println(“是否文件:“+file.isDirectory(); System.out.println(“是否文件:“+file2.isFile(); ,File类不仅可以操作文件,还可以操作目录。,10.1.6 Scanner解析文件,之前介绍过使用Scanner类从标准输入设备接收数据

9、,以及Scanner类解析字符串。 实际上使用Scanner解析文件,即是把文件当作数据输入源。 例5:程序ScannerFile演示了使用Scanner解析文件的功能。,import java.io.*; import java.util.*; public class ScannerFile public static void main(String args)throws Exception File file=new File(“file“+File.separator+“hello.txt“); Scanner fin=new Scanner(file); /file是数据源 wh

10、ile(fin.hasNext() String s=fin.next(); System.out.println(s); ,10.2 Stream,Unix系统把所有的IO设备看作文件设备,这样来带操作上的方便。比如打开、关闭、读、写,只要会使用这几个操作,无论什么外部设备都可以轻松应对。 实际上,C/C+中,IO系统的实现是非常复杂的,因为要考虑到不同的种类的IO,需要大量低层细节。 Java使用流(stream)的概念来表示输入输出(I/O)的功能,是一种数据的源头和目的之间的通信途径。对于数据流Stream,凡是从外部设备流向CPU的数据流称为输入流,反之称为输出流。Java设计者用流

11、来屏蔽掉设备之间的差异,通过流类隐藏了通信的细节。 Java将流类分为字节流类和字符流类,实际应用上80%以上的读写是二进制形式;重点介绍字节流:字节流又可以分为InputStream和OutputSream两大类。,10.3 InputStream,FileInputStream是一个简单的输入流类,直接继承于InputStream类,所以的方法均来自InputStream类。,例6:测试将文件中的数据读取到程序中。 import java.io.*; public class InputStreamTest public static void main(String args) int

12、len; byte buffer=new byte100; try File file=new File(“file“+File.separator+“hello.txt“); FileInputStream fin=new FileInputStream(file); while(len=fin.read(buffer)0) String s=new String(buffer,0,len); System.out.print(s); catch(Exception e) System.out.print(e); ,字节数组buffer,用于临时存放数据; 用hello.txt为参数定义一个

13、File对象,表示数据源; 以File对象为参数定义一个FileInputStream对象fin,也就是输入流fin的数据源是刚才定义的File对象; 通过输入流调用read方法,把读取的数据存储到buffer中,再输出buffer数组中的数据。,10.4 OutputStream,与FileInputStream对应的是FileOutputstream。FileOutputstream类直接继承自Outputstream,是文件输出流,将字节数据输出到文件中。,例7:演示OutputStream的用法。 import java.io.*; public class OutputStreamT

14、est public static void main(String args) byte buffer=“Hello,Java World!“.getBytes(); String filename=“file“+File.separator+“hello2.txt“; try FileOutputStream fout=new FileOutputStream(filename); fout.write(buffer); catch(Exception e) System.out.println(e); ,10.5文件上传原理,文件上传是网站中一个主要的功能,如何实现文件上传呢?通过Fil

15、eInputStream和FileOutputStream两个类就可以实现。 文件上传思路: 1、通过File类定义上传文件; 2、通过FileInputStream类,将文件读入到程序中; 3、通过FileOutputStream将数据写出到文件中;,例8:演示文件上传的基本操作过程。 首先,假设需要读取的文件是rose.gif图片,将其定义成File类对象f; 其次,定义需要写入文件的文件名filename; 第三,以f对象为参数定义FileInputStream类的对象fin,准备读取设备; 第四,以filename为参数定义FileOutputStream类的对象fout; 第五,循环

16、进行读写操作,每次从f中读取一定量数据就直接写入filename指定的文件中。,import java.io.*; public class FileUpload public static void main(String args) int len; byte buffer=new byte1024; try File f=new File(“rose.gif“); String filename=“file“+File.separator+“copy.gif“; FileInputStream fin=new FileInputStream(f); FileOutputStream fout= new

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号