




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十三章,JAVAIO,回顾与作业点评,线程的创建和启动线程的状态及转换线程的调度和优先级线程的同步集合类的同步问题Timer类的调度任务,本章任务,掌握File类的使用掌握IO原理掌握文件流、缓冲流、转换流掌握数据流、打印流、对象流掌握随机存取文件流、ZIP文件流,知识要点,File类的使用IO原理文件流、缓冲流、转换流数据流、打印流、对象流随机存取文件流、ZIP文件流,13.1java.io.File类1.文件和目录2java对文件和目录的操作1.)File类的常用构造方法2.)File类的常用属性3.)File类中常用的访问属性的方法.,/*用File类显示文件属性信息*/publicclassFileAttributeTestpublicstaticvoidmain(Stringargs)throwsIOException/把存储介质中指定路径中的文件抽象成Filte类对象Filefile=newFile(D:IOTestsource.txt);/指定路径下一定要有这个文件存在,否则会有异常/后面的IO程序基本上都是在D:/IOTest下操作的System.out.println(文件或目录是否存在:+file.exists();System.out.println(是文件吗:+file.isFile();System.out.println(是目录吗:+file.isDirectory();System.out.println(名称:+file.getName();System.out.println(路径:+file.getPath();System.out.println(绝对路径:+file.getAbsolutePath();System.out.println(绝对路径规范表示:+file.getCanonicalPath();System.out.println(最后修改时间:+file.lastModified();System.out.println(文件大小:+file.length()+字节);,4.)对文件的操作createNewFile(),delete(),mkdir(),mkdirs(),renameTo()5.)浏览目录中的文件和子目录的方法list()listFiles(),importjava.io.File;importjava.io.IOException;/*文件操作演示*/publicclassFileOperateTestpublicstaticvoidmain(Stringargs)throwsIOExceptionFiledir1=newFile(D:/IOTest/dir1);if(!dir1.exists()/如果D:/IOTest/dir1不存在,就创建为目录dir1.mkdir();Filedir2=newFile(dir1,dir2);/创建以dir1为父目录,名为dir2的File对象if(!dir2.exists()/如果还不存在,就创建为目录dir2.mkdirs();Filedir4=newFile(dir1,dir3/dir4);if(!dir4.exists()dir4.mkdirs();Filefile=newFile(dir2,test.txt);/创建以dir2为父目录,名为test.txt的File对象if(!file.exists()/如果还不存在,就创建为目录file.createNewFile();System.out.println(dir1.getAbsolutePath();/输出dir1的绝对路径名listChilds(dir1,0);/递归显示dir1下的所有文件和目录信息deleteAll(dir1);/删除目录,/递归显示指定目录下的所有文件和目录信息.level用来记录当前递归的层次publicstaticvoidlistChilds(Filedir,intlevel)/生成有层次感的空格StringBuildersb=newStringBuilder(|-);for(inti=0;ilevel;i+)sb.insert(0,|);Filechilds=dir.listFiles();/递归出口intlength=childs=null?0:childs.length;for(inti=0;i:+s.toUpperCase();System.out.println(继续输入信息);catch(IOExceptione)e.printStackTrace();finallytryif(null!=br)br.close();/关闭过滤流时,会自动关闭它包装的底层节点流catch(IOExceptione)e.printStackTrace();,13.7数据流:可操作基本数据类型的数据,分为1.DataInputSTream2.DataOutputStream,importjava.io.DataOutputStream;importjava.io.FileOutputStream;importjava.io.IOException;publicclassDataOutputStreamTestpublicstaticvoidmain(Stringargs)DataOutputStreamdos=null;try/创建连接到指定文件的数据输出流对象dos=newDataOutputStream(newFileOutputStream(d:IOTestdestData.dat);dos.writeUTF(ab中国);/写UTF字符串dos.writeBoolean(false);/写入布尔值dos.writeLong(1234567890L);/写入长整数System.out.println(写文件成功!);catch(IOExceptione)e.printStackTrace();finallytryif(null!=dos)dos.close();/关闭过滤流时,会自动关闭它包装的底层节点流catch(IOExceptione)e.printStackTrace();,13.8打印流:PrintStream和PrintWriter:可将基本数据类型的数据转化成字符串输出。,importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.PrintStream;publicclassPrintStreamTestpublicstaticvoidmain(Stringargs)FileOutputStreamfos=null;tryfos=newFileOutputStream(newFile(D:IOTesttext.txt);catch(FileNotFoundExceptione)e.printStackTrace();/创建打印输出流,设置为自动刷新模式(写入换行符或字节n时都会刷新输出缓冲区)PrintStreamps=newPrintStream(fos,true);if(ps!=null)/把标准输出流(控制台输出)改成文件System.setOut(ps);for(inti=0;i=255;i+)/输出ASCII字符System.out.print(char)i);if(i%50=0)/每50个数据一行System.out.println();/换行ps.close();,13.9对象流:ObjectInputStream和ObjectOutputStream:用于存取和读取基本类型数据或对象的过滤流,可把java中的对象写到数据源中,也能把对象从数据源中还原回来。,1.序列化和反序列化,publicclassStudentimplementsjava.io.SerializableprivatestaticfinallongserialVersionUID=6858255444765880074L;privateintid;privateStringname;privatetransientintage;/不需要序列化的属性publicStudent()publicStudent(intid,Stringname,intage)this.id=id;=name;this.age=age;publicintgetId()returnid;publicStringgetName()returnname;publicintgetAge()returnage;publicStringtoString()returnid=+id+,name=+name+,age=+age;,importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectOutputStream;/*序列化示例*/publicclassSerializationTestpublicstaticvoidmain(Stringargs)ObjectOutputStreamoos=null;try/创建连接到指定文件的对象输出流实例oos=newObjectOutputStream(newFileOutputStream(D:IOTestobjectSeri.dat);oos.writeObject(newStudent(101,张三,22);/把stu对象序列化到文件中oos.flush();/刷新输出流System.out.println(序列化成功!);catch(IOExceptione)e.printStackTrace();finallytryif(null!=oos)oos.close();/关闭输出流实例catch(IOExceptione)e.printStackTrace();,importjava.io.FileInputStream;importjava.io.IOException;importjava.io.ObjectInputStream;/*反序列化示例*/publicclassDeserializationTestpublicstaticvoidmain(Stringargs)ObjectInputStreamois=null;try/创建连接到指定文件的对象输入流实例ois=newObjectInputStream(newFileInputStream(D:IOTestobjectSeri.dat);Studentstu=(Student)ois.readObject();/读取对象System.out.println(stu);/输出读到的对象信息catch(ClassNotFoundExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace();finallytryif(null!=ois)ois.close();/关闭对象流实例catch(IOExceptione)e.printStackTrace();,2序列化的版本13.10随机存取文件流RandomAccessFile可在程序的任何地方读取或写入数据,importjava.io.BufferedInputStream;importjava.io.File;importjava.io.IOException;importjava.io.RandomAccessFile;.URL;.URLConnection;/*利用多线程下载文件的示例*/publicclassMultiThreadDownloadTestpublicstaticvoidmain(Stringargs)throwsIOExceptionStringurlStr=URLurl=newURL(urlStr);/创建URLURLConnectioncon=url.openConnection();/建立连接intcontentLen=con.getContentLength();/获得资源总长度intthreadQut=10;/线程数intsubLen=contentLen/threadQut;/每个线程要下载的大小intremainder=contentLen%threadQut;/余数FiledestFile=newFile(D:IOTestbjhyl.mp3);/目标文件/创建并启动线程for(inti=0;ithreadQut;i+)intstart=subLen*i;/开始位置intend=start+subLen-1;/结束位置if(i=threadQut-1)/最后一个线程的结束位置end+=remainder;Threadt=newThread(newDownloadRunnable(start,end,url,destFile);t.start();,/*线程下载类*/classDownloadRunnableimplementsRunnableprivatefinalintstart;privatefinalintend;privatefinalURLsrcURL;privatefinalFiledestFile;publicstaticfinalintBUFFER_SIZE=8192;/缓冲区大小DownloadRunnable(intstart,intend,URLsrcURL,FiledestFile)this.start=start;this.end=end;this.srcURL=srcURL;this.destFile=destFile;publicvoidrun()System.out.println(Thread.currentThread().getName()+启动.);BufferedInputStreambis=null;RandomAccessFileras=null;bytebuf=newbyteBUFFER_SIZE;/创建一个缓冲区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生活污水培训课件
- 培训制度体系建设
- 借调人员转正政策解读
- 2026届娄底市重点中学九年级化学第一学期期末学业水平测试试题含解析
- 2026届郑州市金水区英语九上期末考试试题含解析
- 2026届重庆市巴南区全善学校化学九年级第一学期期末达标测试试题含解析
- 河南省新乡市第七中学2026届九年级英语第一学期期末复习检测试题含解析
- 江西省抚州市金溪县2026届化学九上期中监测模拟试题含解析
- 2026届山东省滨州市名校化学九上期中联考模拟试题含解析
- 2026届吉林省长春市第108中学九年级化学第一学期期末联考模拟试题含解析
- 失眠抑郁焦虑课件
- 天然林保护知识培训内容课件
- 杜邦机械完整性培训课件
- 2025年国家级检验检测机构资质认定评审员考试在线题库(附答案)
- 2025年度中国文化遗产研究院应届毕业生招聘(6人)笔试备考试题附答案详解(研优卷)
- 成人糖尿病食养指南2025
- (高清版)DB54∕T 0483-2025 《食用农产品快检数字化监管规范》
- 焦裕禄课件教学课件
- 微生物感染与健康
- 城市交通信号控制系统现状与发展展望
- 长城汽车企业文化
评论
0/150
提交评论