第15章输入输出流与文件操作

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第十五章输入输出流与文件操作立体化教材计算机系列—《Java程序设计》‹#›目录重点与难点点拨输入输出流的分类目录和文件管理文件和随机访问其他常用的流综合案例字符流字节流经典练习题立体化教材计算机系列—《Java程序设计》‹#›本章知识重点3132输入输出流的分类33java.io包中流的体系结构34目录和文件管理涉及到的类输入输出流的概念立体化教材计算机系列—《Java程序设计》‹#›本章知识难点33java.io包中的输入输出流类3132目录和文件管理涉及到的类流输入及输出的一般过程立体化教材计算机系列—《Java程序设计》‹#›输入输出流的分类Java流的概念Java使用流(stream)来执行输入输出(I/O)的功能,流是一种数据的源头和目的之间的通信途径标准输入输出Java系统事先定义好两个流对象,分别与系统的标准输入和标准输出相联系,它们是System.in和System.outSystem是Java中一个功能很强大的类,利用它可以获得很多Java运行时的系统信息。3132【例15.1】立体化教材计算机系列—《Java程序设计》‹#›输出流(程序写出数据)输入流(程序读入数据)Java中根据流操作的种类可分为:字节流和字符流根据流的方向,流可分为两类:输入流和输出流Java流类体系结构1Java流类体系结构2Java流类体系结构3Java流类体系结构4——Java流的概念输入输出流的分类立体化教材计算机系列—《Java程序设计》‹#›目录和文件管理32文件名的处理31File类文件或目录的生成文件属性测试普通文件信息和工具目录操作◆publicFile(Stringpath):如果path是实际存在的路径,则该File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。◆publicFile(Stringpath,Stringname):path是路径名,name是文件名(不可为空)。◆publicFile(Filedir,Stringname):dir是路径名,name是文件名。◆StringgetName():得到一个文件的名称(不包括路径)。◆StringgetPath():得到一个文件的路径名。◆StringgetAbsolutePath():得到一个文件的绝对路径名。◆StringgetParent():得到一个文件的上一级目录名。◆StringrenameTo(FilenewName):将当前文件名更名为给定文件的完整路径。【例15.2】◆booleanexists():测试当前File对象所指示的文件或目录是否存在,若存在,返回True。◆booleancreateNewFile():创建当前文件。◆booleancanWrite():测试当前文件是否可写。◆booleancanRead():测试当前文件是否可读。◆booleanisFile():测试当前文件是否是文件(不是目录)。◆booleanisDirectory():测试当前文件是否是目录,若为目录则返回True。【例15.3】◆longlastModified():得到文件最近一次修改的时间。◆longlength():得到文件的长度,以字节为单位,若不存在,返回0。◆booleandelete():删除File对象代表的文件或目录,目录需为空。删除成功,返回True。◆booleanmkdir():生成一个由该对象指定的路径(新目录),若成功,返回True。◆booleanmkdirs():生成一个新的目录,包含子目录。若成功,返回true。◆booleanrenameTo(FilenewName):将当前File对象所代表的路径名改为newName所代表的路径名。若成功,返回true。◆Stringlist():列出当前目录下的文件。◆File[]listFiles():得到该对象所代表的目录下的File对象数组。◆StringtoString():得到抽象路径表示法。【例15.4】File类的应用【例15.5】【例15.6】立体化教材计算机系列—《Java程序设计》‹#›字节流缓冲区流BufferedInputStream和BufferedOutputStream33顺序读/写文件(FileInputStream与FileOutputStream)31ByteArrayInputStream和ByteArrayOutputStream32立体化教材计算机系列—《Java程序设计》‹#›文件的随机访问31在java中,类RandomAccessFile提供了随机访问文件的方法◆RandomAccessFile(Filefile,Stringmode):构造一个随机访问文件流,file为被访问的文件对象,mode是用来指定存取的模式,mode可以为r(读)、w(写)或rw(读写)。◆RandomAccessFile(Stringname,Stringmode):构造一个随机访问文件流,以便访问由字符串name指定名字的文件,mode参数使用同上32RandomAccessFile类提供的用来读取某种基本数据类型的数据或字符串的方法◆booleanreadBoolean()◆bytereadByte()◆charreadChar()◆doublereadDouble()◆floatreadFloat()◆intreadInt()◆longreadLong()◆shortreadShort()◆StringreadLine()33RandomAccessFile类提供的用来向文件中写入某种基本类型的数据或字符串的方法◆voidwriteByte(byteb)◆voidwriteBytes(Strings)◆voidwriteChar(charc)◆voidwriteChars(Strings)◆voidwriteDouble(doubled)◆voidwriteFloat(floatf)◆voidwriteInt(inti)◆voidwriteLong(longl)◆voidwriteShort(shorts)34和目前文件位置有关的方法◆voidseek(longpos):将文件指针移到pos(不可为负)的位置,相对于文件初始位置值(初始值为0)。◆longgetFilePointer():得到目前文件指针的位置(相对于文件初始位置)。◆longlength():得到文件的长度。◆intskipBytes(intn):使文件指针向前移动指定的n个字节【例15.15】立体化教材计算机系列—《Java程序设计》‹#›其他常用的流33343132管道流ZIP文件流DataInputStream和DataOutputStream对象流立体化教材计算机系列—《Java程序设计》‹#›综合案例【例15.16】下面的代码实现了一个简单的文件编辑器importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassFileEditextendsWindowAdapterimplementsActionListener,TextListener{Framef;TextAreata1;Panelp1;TextFieldtf1;Buttonb1,b2,b3;FileDialogfd;Filefile1=null;publicstaticvoidmain(Stringargs[]){(newFileEdit()).display();}立体化教材计算机系列—《Java程序设计》‹#›综合案例(续)publicvoiddisplay(){f=newFrame(FileEdit);f.setSize(680,400);f.setLocation(200,140);f.setBackground(Color.lightGray);f.addWindowListener(this);tf1=newTextField();tf1.setEnabled(false);tf1.setFont(newFont(Dialog,0,20));//设置文本行的初始字体f.add(tf1,North);ta1=newTextArea();ta1.setFont(newFont(Dialog,0,20));//设置文本区的初始字体f.add(ta1);ta1.addTextListener(this);//注册文本区的事件监听程序p1=newPanel();p1.setLayout(newFlowLayout(FlowLayout.LEFT));立体化教材计算机系列—《Java程序设计》‹#›综合案例(续)b1=newButton(Open);b2=newButton(Save);b3=newButton(SaveAs);p1.add(b1);p1.add(b2);p1.add(b3);b2.setEnabled(false);b3.setEnabled(false);b1.addActionListener(this);//注册按钮的事件监听程序b2.addActionListener(this);b3.addActionListener(this);f.add(p1,South);f.setVisible(true);}publicvoidtextValueChanged(TextEvente){//实现TextListener接口中的方法,对文本区操作时触发b2.setEnabled(true);b3.setEnabled(true);}立体化教材计算机系列—《Java程序设计》‹#›综合案例(续)publicvoidactionPerformed(ActionEvente){if(e.getSource()==b1){//单击[打开]按钮时fd=newFileDialog(f,Open,FileDialog.LOAD);fd.setVisible(true);//创建并显示打开文件对话框if((fd.getDirectory()!=null)&&(fd.getFile()!=null)){tf1.setText(fd.getDirectory()+fd.getFile());try//以缓冲区方式读取文件内容{file1=newFile(fd.getDirectory(),fd.getFile());FileReaderfr=newFileReader(file1);BufferedReaderbr=newBufferedReader(fr);Stringaline;while((aline=br.readLine())!=null)//按行读取文本ta1.append(aline+\r\n);fr.close();br.close();}catch(IOExceptionioe){System.out.println(ioe);}}}立体化教材计算机系列—《Java程序设计》‹#›综合案例(续)if((e.getSource()==b2)||(e.getSource()==b3)){//单击[保存]按钮时if((e.getSource()==b3)||(e.getSource()==b2)&&(file1==null)){//单击[SaveAs]按钮时,或单击[Save]按钮且文件对象为空时fd=newFileDialog(f,Save,FileDialog.SAVE);if(file1==null)fd.setFile(Edit1.txt);elsefd.setFile(file1.getName());fd.setVisible(true);//创建并显示保存文件对话框if((fd.getDirectory()!=null)&&(fd.getFile()!=null)){tf1.setText(fd.getDirectory()+fd.getFile());file1=new

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功