Java面向对象程序设计与实践应用 课件 第九章 文件操作-云医院数据的备份与恢复_第1页
Java面向对象程序设计与实践应用 课件 第九章 文件操作-云医院数据的备份与恢复_第2页
Java面向对象程序设计与实践应用 课件 第九章 文件操作-云医院数据的备份与恢复_第3页
Java面向对象程序设计与实践应用 课件 第九章 文件操作-云医院数据的备份与恢复_第4页
Java面向对象程序设计与实践应用 课件 第九章 文件操作-云医院数据的备份与恢复_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江苏理工学院第9章文件操作—云医院数据的备份与恢复时间:主讲人:2025.62025CONTENTS目录01文件处理02流的基本概念03文件的随机访问04云医院的医护信息读取05小结文件处理Part.01江苏理工学院File类是磁盘文件和目录的抽象表示。提供多种构造方法,如File(Stringpathname)、File(Stringparent,Stringfilename)和File(Fileparent,Stringchild),用于创建File对象。File的构造方法File类提供了多种方法来操作文件和获取文件信息,如getName()、getParent()、getPath()、exists()、isDirectory()、isFile()、length()、delete()和createNewFile()等。File类成员方法File类简介File类成员方法方

明功

能StringgetName()返回由此抽象路径名表示的文件或目录的名称StringgetParent()返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回

nullFilegetParentFile()返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回

nullStringgetPath()将此抽象路径名转换为一个路径名字符串booleanisAbsolute()测试此抽象路径名是否为绝对路径名。如果此抽象路径名是绝对路径名,则返回

true;否则返回

falseStringgetAbsolutePath()返回抽象路径名的绝对路径名字符串booleancanRead()测试应用程序是否可以读取此抽象路径名表示的文件。当且仅当此抽象路径名指定的文件存在且可由应用程序读取时,返回

true;否则返回

falsebooleancanWrite()测试应用程序是否可以修改此抽象路径名表示的文件。当且仅当文件系统实际包含此抽象路径名表示的文件且允许应用程序对该文件进行写入时,返回

true;否则返回

falsebooleanexists()测试此抽象路径名表示的文件或目录是否存在。当且仅当此抽象路径名表示的文件或目录存在时,返回

true;否则返回

falsebooleanisDirectory()测试此抽象路径名表示的文件是否是一个目录,当且仅当此抽象路径名表示的文件存在且是一个目录时,返回

true;否则返回

falsebooleanisFile()测试此抽象路径名表示的文件是否是一个标准文件。当且仅当此抽象路径名表示的文件存在且是一个标准文件时,返回

true;否则返回

falselonglength()返回由此抽象路径名表示的文件的长度。此抽象路径名表示的文件的长度,以字节为单位,如果文件不存在,则返回

0Lbooleandelete()删除此抽象路径名表示的文件或目录。当且仅当成功删除文件或目录时,返回

true;否则返回

falsebooleanexists()测试此抽象路径名表示的文件或目录是否存在。当且仅当此抽象路径名表示的文件或目录存在时,返回

true;否则返回

falseBoolean

createNewFile()若File对象表示的文件不存在,则调用此方法创建一个空文件。若创建成功,则返回

true;否则返回

falsepublicclassFileTest{publicstaticvoidmain(String[]args){Filef=newFile("e:\1.txt"); if(f.exists()){ f.delete(); }else{ try{ f.createNewFile(); }catch(Exceptione){ System.out.println(e.getMessage()); }· System.out.println("文件名:"+f.getName()); System.out.println("文件路径:"+f.getPath()); System.out.println("绝对路径:"+f.getAbsolutePath()); System.out.println("父文件夹名称:"+f.getParent()); System.out.println(f.exists()?"文件存在":"文件不存在"); System.out.println(f.canWrite()?"文件可写":"文件不可写"); System.out.println(f.canRead()?"文件可读":"文件不可读"); System.out.println(f.isDirectory()?"是目录":"不是目录"); System.out.println(f.isFile()?"是文件":"不是文件"); System.out.println(f.isAbsolute()?"是绝对路径":"不是绝对路径"); System.out.println("文件大小:"+f.length()+"字节");}}}0102Java的标准输入流System.in和标准输出流System.out分别用于从键盘读取数据和向显示器输出数据。示例代码使用File类流的基本概念Part.02江苏理工学院流的基本信息流(Stream)是一组有序的数据序列。根据操作的类型,流分为输入流和输出流两种。输入流是指从某种数据源(如键盘、磁盘文件等)到程序的一个流,程序可以从这个流中读取数据;输出流是从程序到某种目的地(如磁盘文件、终端设备等)的一个流,程序可以将信息写入这个流。流的概念Java的I/O类都包含在java.io包中,有不同的流类满足不同性质的输入/输出需要。Java的输入/输出流一般分为字节输入流、字节输出流、字符输入流和字符输出流4种。Java针对这4种流的分类为每个系列的类设计了一个父类,而实现具体操作的类都作为该系列类的子类,对应的这4个抽象父类分别是:InputStream、OutputStream、Reader和Writer。流的分类输入/输出流字节输入/输出流方

称功

述intavailable()返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数voidclose()关闭此输入流并释放与该流关联的所有系统资源voidmark(int

readlimit)在此输入流中标记当前的位置abstractintread()从输入流读取下一个数据字节intread(byte[]

b)从输入流中读取一定数量的字节并将其存储在缓冲区数组

b

中Int

read(byte[]

b,

int

off,int

len)将输入流中最多

len

个数据字节读入字节数组voidreset()将此流重新定位到对此输入流最后调用

mark

方法时的位置longskip(long

n)跳过和放弃此输入流中的

n

个数据字节方

称功

述voidclose()关闭此输出流并释放与此流有关的所有系统资源voidflush()刷新此输出流并强制写出所有缓冲的输出字节voidwrite(byte[]

b)将

b.length

个字节从指定的字节数组写入此输出流voidwrite(byte[]

b,int

off,

int

len)将指定字节数组中从偏移量

off

开始的

len

个字节写入此输出流abstractvoidwrite(int

b)将指定的字节写入此输出流字符输入/输出流方

称功

述abstractvoidclose()关闭该流oidmark(int

readAheadLimit)标记流中的当前位置方

称功

述booleanmarkSupported()判断此流是否支持mark()操作intread()读取单个字符intread(char[]

cbuf)将字符读入数组abstractintread(char[]

cbuf,int

off,int

len)将字符读入数组的某一部分read(CharBuffer

target)试图将字符读入指定的字符缓冲区booleanready()判断是否准备读取此流voidreset()重置该流longskip(long

n)跳过字符方

称功

述Writerappend(char

c)将指定字符追加到此writerWriterappend(CharSequence

csq)将指定字符序列追加到此writerWriter

append(CharSequence

csq,int

start,int

end)将指定字符序列的子序列追加到此writer.Appendableabstractvoidclose()关闭此流,但要先刷新它abstractvoidflush()刷新此流voidwrite(char[]

cbuf)写入字符数组abstractvoidwrite(char[]

cbuf,

int

off,int

len)写入字符数组的某一部分voidwrite(String

str)写入字符串voidwrite(String

str,int

off,int

len)写入字符串的某一部分voidwrite(int

c)写入单个字符在计算机系统中,标准输入是从键盘等外部设备中获得数据,标准输出是向显示器等外部设备发送数据。在Java中,键盘用stdin表示,监视器用stdout表示。它们均被封装在System类的类常量in和out中,分别对应System.in和System.out,用于实现标准输入和输出功能,声明如下:publicfinalstaticInputStreamin;publicfinalstaticPrintStreamout;标准输入/输出流FileInputStream用于从文件中读取字节数据,常用构造方法包括FileInputStream(Filefile)和FileInputStream(Stringname)。FileInputStreamFileOutputStream用于向文件中写入字节数据,常用构造方法包括FileOutputStream(Filefile)、FileOutputStream(Filefile,booleanappend)、FileOutputStream(Stringname)和FileOutputStream(Stringname,booleanappend)。FileOutputStream文件字节流FileReader用于从文件中读取字符数据,常用构造方法包括FileReader(Filefile)和FileReader(Stringfilename)。FileReaderfr=newFileReader("./src/第八章/FileReaderExample01.javasrc/main/java/org/example/chapter9/FileReaderExample01.java");while((c=fr.read())!=-1){System.out.print((char)c); }fr.close(); }FileReaderFileWriter用于向文件中写入字符数据,常用构造方法包括FileWriter(Filefile)、FileWriter(Filefile,booleanappend)、FileWriter(Stringfilename)和FileWriter(Stringfilename,booleanappend)。FileWriter文件字符流fw=newFileWriter("./unicode.dat");//把大写字母A~Z写入文件for(intc=65;c<=90;c++){ fw.write(c); num++;}//把小写字母a~z也写入文件

for(intc=97;c<=122;c++){fw.write(c);num++;}fw.close();DataInputStream和DataOutputStream用于读写基本数据类型和字符串,常用方法包括readByte()、readLong()、readChar()、readFloat()、readUTF()、writeByte()、writeLong()、writeChar()、writeFloat()和writeUTF()。DataInputStream和DataOutputStream过滤器流BufferedReader和BufferedWriterBufferedReader用于按行读取字符数据,常用方法包括readLine()。BufferedWriter用于按行写入字符数据,常用方法包括newLine()。字符缓冲流没有缓冲的I/O,直接读写效率就低,为了解决这个缺点,Java提供了基于缓冲的I/O流。带缓冲的输入流从一个类似于缓冲区的内存区域中读取数据,当缓冲区为空时,调用基本的输入API完成输入操作;同样,带缓冲的输出流首先向缓冲区中写数据,在缓冲区已满时调用基本的输出API完成输出操作。缓冲流链接在其他节点流之上,对读写数据提供缓冲功能,提高了读写效率,并增加了一些新的方法。JDK引入了BufferedReader和BufferedWriter类,用来对字符流进行成批处理。InputStreamReader和OutputStreamWriterInputStreamReader和OutputStreamWriter用于将字节流转换为字符流,常用构造方法包括InputStreamReader(InputStreamin)、InputStreamReader(InputStreamin,Stringcname)、OutputStreamWriter(OutputStreamout)和OutputStreamWriter(OutputStreamout,Stringcname)。publicclassTransStreamtest{ publicstaticvoidtransWriteNoBuf()throwsIOException{ OutputStreamout=newFileOutputStream("D:\\demo.txt"); OutputStreamWriterosr=newOutputStreamWriter(out); intch=97; osr.write(ch); Stringstr="你好吗?"; osr.write(str); osr.flush(); osr.close();} publicstaticvoidtransReadNoBuf()throwsIOException{ InputStreamin=newFileInputStream("D:\\demo.txt"); InputStreamReaderisr=newInputStreamReader(in); char[]cha=newchar[1024]; intlen=isr.read(cha); System.out.println(newString(cha,0,len)); isr.close();} publicstaticvoidmain(String[]args)throwsIOException{ transWriteNoBuf(); transReadNoBuf(); }}转换流序列化ObjectInputStream和ObjectOutputStream序列化是将对象转换为字节序列的过程,反序列化是将字节序列还原为对象的过程。对象必须实现Serializable接口。publicclassStudentimplementsSerializable{ Stringsno; Stringsname; intsage; Stringsdepartment; publicStudent(Stringsno,Stringsname,intsage,Stringsdepartment){ super(); this.sno=sno; this.sname=sname; this.sage=sage; this.sdepartment=sdepartment; } }ObjectInputStream和ObjectOutputStream用于读写对象,常用方法包括readObject()和writeObject()。对象流文件的随机访问Part.03江苏理工学院RandomAccessFile类有以下两个构造方法。(1)RandomAccessFile(Stringname,Stringmode):创建从中读取和向其中写入(可选)的随机访问文件流,该文件由file参数指定。(2)RandomAccessFile(Stringname,Stringmode):创建从中读取和向其中写入(可选)的随机访问文件流,该文件由name指定。RandomAccessFile类mode值含

义"r"以只读方式打开。调用结果对象的任何write方法都将导致抛出IOException"rw"以读写方式打开。如果指定的文件不存在,则尝试创建该文件"rws"以读写方式打开。同时对文件内容或元数据的每个更新都同步写入底层存储设备"rwd"以读写方式打开。同时对文件内容的每个更新都同步写入底层存储设备RandomAccessFile类主要方法RandomAccessFile类方

称功

述voidseek(longpos)设置文件指针位置longgetFilePointer()获取文件指针位置longlength()返回文件长度云医院的医护信息读取Part.04江苏理工学院文件格式提供的文本文件“医生.txt”包含医护人员的基本信息,每行一个记录,字段包括科室、职称、姓名、身份证号和工号。呼吸内科

主治医生

张三有00111001001000123呼吸内科

副主任医生

黎思华10000111000011123呼吸内科

主任医生

王伍陆01000111011100123神经内科

主治医生

马梦梅00111000000000123神经内科

主治医生

张新如00111000000000123神经内科

副主任医生

李欣璐00111000000000123神经内科

副主任医生

普亮00111000000000123神经内科

主任医生

杨莉莉00111000000000123普外科

主治医生

王一丰00111000110011123普外科

主治医生

赖雪明110

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论