版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目八Java中IO的使用
I/O是Input/Output的缩写,即输入/输出项目描述
任务一File类【任务描述】
任务8_1:创建路径的File对象和文件的File对象,并调用File的方法,对文件所在的目录名、绝对路径等进行判断,新建一个空目录再将它删除。【必备知识】
1.什么是输入/输出
计算机是由控制器、运算器、存储器、输入设备、输出设备这五大部件所构成的,输入设备有键盘、鼠标、扫描仪、CD/DVD-ROM、麦克锋等,输出设备有显示器、打印机、刻录机、音箱等。在前面的项目中我们用System.out.print系列语句来向计算机屏幕输出程序运行结果,也用了Scanner的实例来读取用户从键盘输出的数据,这样就完成了与用户的简单交互。但有时候,我们希望将程序运行的结果永久性地保存下来,或是想读取大量的数据,这时候显示器和键盘的功能就有局限性了,与外部存储器进行信息交换,将数据写入文件,或是从文件中读取数据,不失为一种更好的选择。
Java执行文件读写操作都是通过对象实现的,读取数据的对象称为输入流(inputstream),写入数据的对象称为输出流(outputstream)。Java的输入输出流又包括字符流和字节流,它们充分利用了OOP的继承特性,公用操作在超类中定义,子类提供特殊的操作,读写操作的对象是文件(File)。2.File类创建输入输出流都要使用到File对象,File对象即可以表示文件,也可以表示目录。文件名的全名是由目录路径与文件名组成的,如C:\java\Example.java是一个文件名的全名,C:\java\是目录路径,Example.java是文件名。文件目录路径既可以是相对路径,也可以是绝对路径。绝对路径是从根目录开始的路径,如:C:/java/src,或写作C:\\java\\src,由于反斜杠已用作转义序列,目录分隔符可以使用两个反斜杠或一个斜杠。与DOS相同,用.表示当前目录,用..表示上一级目录。
File类在io包中,因此,在.java源文件的顶部,要用importjava.io.File或import.java.*来导入包的内容,否则程序运行会出错。
File类常用的构造方法有:[格式8_1File类常用的构造方法]File(Stringpathname)//目录名或是文件名File(Stringparent,Stringchild)//child是parenet的子目录File(Filef,Stringchild)//f是根据目录创建的对象,child在目录中如:
Filef=newFile("C:\\java\\Example.java");Filef=newFile("C:/java/","Example.java");Filef=newFile("Example.java");File类中常用的方法有:[格式8_2File类常用的方法]StringgetName()//获取文件名或目录名,但不包括路径StringgetPath()//获取路径名,如果是文件包括文件名StringgetAbsolutePath()//获取绝对路径名,如果是文件包括文件名StringgetParent()//获取上一级路径名longlastModified()//获取文件上次修改的时间booleanexists()//判断文件或目录是否存在booleanisFile()//判断是否为文件booleanisDirectory()//判断是否为目录booleandelete()//删除文件或空目录booleanmkdir()//如果目录不存在则创建目录说明:(1)lastModified()获取文件上次修改的时间,具体是距1970年1月1日的微秒数;(2)delete()用于删除文件或空目录,如果删除成功则返回true;(3)mkdir()用于创建目录,如果创建成功则返回true。【解题思路】
任务8_1:
1.创建当前路径的File对象;
2.判断当前对象是否为目录,是否为文件,绝对路径为何;
3.判断某个目录是否存在,如果不存在则新建一个,如果存在则删除它。【任务透析】//Three_Example8_1.javaimportjava.io.File;public
classExample8_1{
public
static
voidmain(String[]args){Filef=newFile("./aaa/bbb.txt");//在执行程序前先建立此文件
System.out.println("f.getName()="+f.getName());System.out.println("f.getPath()="+f.getPath());System.out.println("f.getAbsolutePath()="+f.getAbsolutePath());System.out.println("f.getParent()="+f.getParent());System.out.println("f.lastModified()="+f.lastModified());System.out.println("f.exists()="+f.exists());System.out.println("f.isFile()="+f.isFile());System.out.println("f.isDirectory()="+f.isDirectory());System.out.println("f.delete()="+f.delete());//删除文件后返回trueSystem.out.println();System.out.println("f.getName()="+f.getName());System.out.println("f.getPath()="+f.getPath());System.out.println("f.getAbsolutePath()="+f.getAbsolutePath());System.out.println("f.getParent()="+f.getParent());System.out.println("f.lastModified()="+f.lastModified());System.out.println("f.exists()="+f.exists());System.out.println("f.isFile()="+f.isFile());System.out.println("f.isDirectory()="+f.isDirectory());System.out.println("f.delete()="+f.delete());//文件不存在返回false}}图8.1Example8_1.java的运行结果【课堂提问】
★什么输入/输出,计算机有哪里输入/输出的设备?
★什么是相对路径?什么是绝对路径?路径当中的分隔符是用斜杠还是反斜杠?
★File类中常用的构造方法与方法都有哪些?
【现场演练】
判断C:\windows目录是否存在,是的话使用删除命令看能否删除成功?为什么。不是的话则创建这个目录。再同样地操作一个C:\winnt目录任务二I/O流的分类
【任务描述】任务8_2:理解字符流与字节流的特点,以及它们常用的类与方法。了解节点流和过滤流。【必备知识】1.字符流Java定义了两种类型的输入输出流:字节流和字符流。字节流用于处理字节的输入和输出,例如Java的.class文件是字节文件,读写这样的文件就要用字节流。字符流用于处理字符的输入和输出,Java的源程序.java文件使用的是Unicode编码的字符,读写这样的文件就要使用字符流。由于一个字节是8比特,一个字符是16比特,所以很多时候,用字符流处理的速度要高于字节流。Java的I/O系统由很多类组成,它们充分利用了OOP的继承特性。输入输出的公用操作由超类定义,子类提供特殊的操作。由于有两种不同类型的流,I/O系统包括两个独立的类层次结构,一个是字节的,一个是字符的,字节流和字符流的大多数功能是对应的。字符流的顶端是两个抽象类Reader和Writer,其中Reader用于输入,Writer用于输出,两者派生的具体类用于处理Unicode字符的输入和输出,图8.2列出了常用字符流类的层次结构。抽象类Reader提供了读取字符文件的公用方法,常用的如下:[格式8_3Reader类的常用方法]intread()throwsIOException//从输入流中读下一个字符,到达流尾返回-1voidclose()throwsIOException//关闭输入流,释放它占用的系统资源说明:(1)无论是字符流还是字节流方法的定义,都必须声明抛出IOException异常;(2)调用这些方法时都必须处理异常,否则无法通过编译。[格式8_4Writer类的常用方法]voidwrite(intc)throwsIOException//把指定字符的Unicode码写到输出流voidwrite(Stringstr)throwsIOException//把字符串写入到输出流voidclose()throwsIOException//关闭输出流,释放它所占用的系统资源图8.2常用字符流类关系树2.字节流字节流层次结构的顶端是抽象类InputStream和OutputStream,两者分别定义了操作字节输入和字节输出的公共方法被各自的子类继承,图8.3列出了常用字节流类的层次结构。图8.3常用字节流类关系树InputStream类的常用方法如下:[格式8_5InputStream类的常用方法]intread()throwsIOException//从输入流中读下一个字节,到达流尾返回-1voidclose()throwsIOException//关闭字节输入流,释放它占用的系统资源说明:(1)无论是字符流还是字节流方法的定义,都必须声明抛出IOException异常;(2)调用这些方法时都必须处理异常,否则无法通过编译。OutputStream类的常用方法如下:[格式8_6OutputStream类的常用方法]voidread(intb)//从指定的字节写入输出流voidclose()throwsIOException//关闭字节输出流,释放它占用的系统资源3.节点流和过滤流节点流是用于直接操作目标设备所对应的流类。节点流类所对应的I/O源或目标称为流节点。比如我们用一个类和一个文件或网络相关联,那么这个类就叫做节点流类,这个文件或网络就叫做流的节点。换句话说,节点流是从特定的地方读写的流类,例如:磁盘或一块内存区域。节点流可以从或向一个特定的地方(节点)读写数据,如FileReader。过滤流又称处理流,使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。过滤流是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写,如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。【课堂提问】★什么字节流,什么是字符流,字节流与字符流有何不同?★什么样的文件适合用字节流读写?什么样的文件适合用字符流读写?★为什么调用字节流或字符流方法时都要处理异常?什么异常?★什么是节点流和过滤流?任务三常用I/O流的应用
【任务描述】任务8_3:将一个Unicode编码的文本文件读取出来,打印行号并统计行数、字节数。任务8_4:编写一个程序,创建一个数据文件a.txt,并通过FileWrite对象向其中输出整数1至100。【解题思路】
任务8_3:1.定义一个名为Example8_3的类;2.将文件的读取过程抛出异常;3.创建一个名为text.txt的文件,里面写入几行数据;4.创建一个名为f的读取文件的实例;5.创建行数与字节数的变量,并赋初始值;6.一个字符一个字符地读入text.txt文件里的数据,同时输出到屏幕;7.当读入的字符为Unicode码的换行时,输出另起一行。任务8_4:1.定义一个名为Example8_4的类;2.将文件的写入过程抛出异常;3.创建一个名为a.txt的文件;4.创建一个名为w的写入文件的实例;5.定义整型变量i,由1循环至100;6.将i写入到a.txt,并添加分隔符号;7.写入完毕,关闭a.txt文件。【任务透析】//Example8_3.javaimportjava.io.*;public
classExample8_3{
public
static
voidmain(String[]args){
inti,j=1,k=0;
try{ FileReaderf=newFileReader("D:/java/src/text.txt");System.out.print("第"+j+"行:");
while(true){ i=f.read();
if(i==-1)
break; k++; System.out.print((char)i);
if(i==10) { j++; System.out.print("第"+j+"行:"); }}}
catch(FileNotFoundExceptione1){System.out.println("指定文件不存在");}
catch(IOExceptione2){System.out.println("输出异常");}System.ou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《脾破裂手术配合》课件
- 《看灯笼找算式题》课件
- 美的必修课(陕西工商职业学院)知到智慧树答案
- 咖啡文化与饮品调制(青岛酒店管理职业技术学院)知到智慧树答案
- 程控电话安装与调试 理论习题一
- 《圆柱的体积》课件2
- 水煤浆生产线项目可研报告
- 《绩效管理演讲稿》课件
- 《台阶轴编程加工》课件
- 2015年浙江义乌中考满分作文《我长大了》
- 应对考试失败的心态调整
- 重症患者急性胃肠损伤分级-AGI
- 高温熔盐电解镁技术
- 无人机技术的移动通信基站应用
- 《种子萌发形成幼苗》示范公开课教学设计【生物北师大七年级上册】
- 工业自动化在智能制造中的角色
- 新医改背景下公立中医综合医院发展的对策
- 一例压力性损伤的个案护理
- 河南省郑州市2023-2024学年高二上学期期期末生物试题【含答案解析】
- 银行进口付汇流程客户端课件
- 卓越绩效自评报告编写要求
评论
0/150
提交评论