《Java输入输出》PPT课件.ppt_第1页
《Java输入输出》PPT课件.ppt_第2页
《Java输入输出》PPT课件.ppt_第3页
《Java输入输出》PPT课件.ppt_第4页
《Java输入输出》PPT课件.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

Java输入输出,本章内容,文件操作 字节流 字符流 字节流与字符流的区别,本章目标,掌握使用File类进行文件操作 理解输入输出流的概念 掌握使用字节流读写文件 掌握使用字符流读写文件,1.文件操作,什么是文件,文件是相关记录或存放于相同位置的数据的集合,Java中提供java.io.File类操作文件及目录,1.1 使用File类操作目录,File类主要常量及方法,使用File类操作目录,File f = new File(“c:/1.txt“); if(f.exists()/判断文件是否存在 f.delete();/删除文件 else try f.createNewFile();/创建新文件 catch (Exception e) e.printStackTrace(); System.out.println(“文件名称:“+f.getName(); System.out.println(“文件路径:“+f.getPath(); System.out.println(f.canWrite()?“文件可写“:“文件不可写“); System.out.println(f.isDirectory()?“是目录“:“不是目录“); System.out.println(“文件长度:“+f.length()+“Bytes“);,判断文件是否存在,不存在则创建,存在则删除,使用File类操作目录,package com; import java.io.*; public class FileDemo public static void main(String args) File f = new File(“d:“+File.separator+“source“); f.mkdir(); ,创建文件夹,文件分隔符,使用File类操作目录,File f = new File(“c:“+File.separator); String str = f.list(); for(int i=0;istr.length;i+) System.out.println(stri); ,列出指定目录下的文件,列出C盘下 全部内容,File类只是针对文件进行操作,对文件内容操作须使用RandomAccessFile类,1.2 RandomAccessFile类读写文件,RandomAccessFile类提供文件指针,支持“随机访问”,使用RandomAccessFile类读写文件,RandomAccessFile类写入数据,File f = new File(“c:“+File.separator+“demo.txt“); RandomAccessFile rdf = new RandomAccessFile(f,“rw“); String name = null; int age = 0; name = “tom“; age = 18;/整型数据在内存中占4个字节大小 rdf.writeBytes(name);/将name写入到文件 rdf.writeInt(age);/将年龄写入到文件 name = “mike“; age = 21; rdf.writeBytes(name);/将name写入到文件 rdf.writeInt(age);/将年龄写入到文件 rdf.close();,读取方式,使用RandomAccessFile类读写文件,RandomAccessFile类读取数据,String name =“; int age = 0; byte b = new byte4; rdf.skipBytes(7);/跳过7个字节,即跳过第一个人的信息 for(int i = 0 ;i姓名:“+name+“;年龄:“+age); rdf.seek(0);/指针回到文件开始 /读取第一人的信息 rdf.close();,2. 流,理解流的概念,数据流是一串连续不断的数据的集合,即一连串流动的字符,流,字节流,字符流,输入流,输出流,按内容分,按功能分,3.字节流,InputStream,OutputStream,来自数据源的数据流,流向目的地的数据流,字节流,字节流,流使用步骤,使用File类打开文件,使用字节或字符流指定位置,进行读写操作,关闭流,InputStream: 程序可以从中连续读取字节的对象称为字节输入流,InputStream 的主要方法,3.1 InputPutStream和OutputStream,InputStream和OutputStream,OutputStream: 程序可以向其中连续写入字节的对象称为字节输出流,OutputStream 的主要方法,InputStream和OutputStream是两个抽象类,使用子类FileInputStream和FileOutputStream分别读取和写入文件的内容,3.2 FileInputStream和FileOutputStream,/1.使用File类找到一个文件,如果当前文件不存在则创建新文件 File f = new File(“d:“+File.separator+“demo.txt“); /2.实例化IO流类 OutputStream os = new FileOutputStream(f,true); String str=“hello world“; /3。进行写操作 os.write(str.getBytes(); /4.关闭输出流 os.close(); FileInputStream in = new FileInputStream(f); byte buf = new byte1024; int len = in.read(buf); System.out.println(new String(buf,0,len); in.close();,true:在文件末尾追加内容,BufferedInputStream和BufferedOutputStream,BufferedInputStream和BufferedOutputStream可以增加内存缓冲区,BufferedInputStream构造方法,BufferedInputStream(InputStream in) BufferedInputStream(InputStream in,int size),第一种形式的构造方法创建带有32个字节缓冲区的缓冲流,第二种形式的构造方法按指定的大小来创建缓冲区,BufferedOutputStream构造方法,BufferedOutputStream(OutputStream in) BufferedOutputStream(OutputStream in,int size),第一种形式的构造方法创建带有32个字节缓冲区的缓冲流,第二种形式的构造方法按指定的大小来创建缓冲区,BufferedInputStream和BufferedOutputStream,byte data = new byte1; FileInputStream in = new FileInputStream(“d:/test.txt“); FileOutputStream os = new FileOutputStream(“d:/demo.txt“); BufferedInputStream bufin = new BufferedInputStream(in); BufferedOutputStream bufos = new BufferedOutputStream(os); while(bufin.read(data)!=-1) bufos.write(data); bufos.flush();/强制输出缓冲区中的数据 bufin.close(); bufos.close();,文件到达末尾,返回-1,3.4 对象序列化和反序列化,内存中的整个对象存储至文件中称为对象序列化,对象序列化步骤,对象所属的类实现Serializable接口,ObjectOutputStream完成对象存储,ObjectInputStream完成对象读取,对象序列化和反序列化,ObjectInputStream类主要方法,ObjectOutputStream类主要方法,对象序列化和反序列化,public class Student implements java.io.Serializable private String name; private int age; public Student(String name,int age) = name; this.age = age; public int getAge() return age; public void setAge(int age) this.age = age; /getter/setter方法 ,对象所属的类实现Serializable接口,对象序列化和反序列化,使用ObjectOutputStream保存对象,File f = new File(“d:“+File.separator+“stuInfo.txt“); OutputStream outStream = new FileOutputStream(f); ObjectOutputStream os = new ObjectOutputStream(outStream); os.writeObject(new Student(“tom“,20); outStream.close(); os.close();,保存对象,对象序列化和反序列化,使用ObjectInputStream读取对象,File f = new File(“d:“+File.separator+“stuInfo.txt“); InputStream inStream = new FileInputStream(f); ObjectInputStream in = new ObjectInputStream(inStream); Object object = in.readObject(); Student stu = (Student)object; System.out.println(“姓名:“+stu.getName(); System.out.println(“年龄:“+stu.getAge(); inStream.close(); in.close();,读取对象信息,4.字符流,4.1 Reader和Writer,Reade和Writer是两个抽象类,分别与InputStream和OutputStream对应,Reader的主要方法,Writer主要方法,4.2 FileReader和FileWriter,File f = new File(“d:/demo.doc“); Writer out = new FileWriter(f); out.write(“hello world“); out.close(); Reader reader = new FileReader(f); char c = new char1024; int len = reader.read(c);/将内容读取到字符数组中 System.out.println(new String(c,0,len); out.close(); reader.close();,FileReader和FileWriter是Reader和Writer的子类,主要用于读写字符文件,4.3InputStreamReader和OutputStreamWriter,InputStreamReader和OutputStreamWriter是字节流和字符流之间的转换类,InputStreamReader是将输入的字节流变为字符 构造方法,OutputStreamWriter是将输出的字符流变为字节流 构造方法,InputStreamReader(InputStream in) InputStreamReader(InputStream in,String charsetName),InputStreamReader(InputStream in) InputStreamReader(InputStream in,String charsetName),InputStreamReader和OutputStreamWriter,字符流转换字节流,字节流转换字符流,File f = new File(“d:/demo.txt“); OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(f); os.write(“hello world“); os.close();,File f = new File(“d:/demo.txt“); /字节流变为字符流 InputStreamReader reader= new InputStreamReader(new FileInputStream(f); char c = new char1024; int len = reader.read(c); System.out.println(new String(c,0,len); reader.close();,避免频繁进行字符与字节间的相互转换,尽量分别使用BufferedWriter和BufferedReader类包装OutputStreamWriter和InputStreamReader类,4.4 BuffedReader和BufferedWriter,BufferedReader和BufferedWriter是带缓冲区的Reader和Writer,BufferedReader主要方法,BufferedWriter主要方法,BuffedReader和BufferedWriter,File f = new File(“d:/demo.txt“); FileWriter writer = new FileWriter(f); BufferedWriter bufWriter = new BufferedWriter(writer); bufWriter.write(“hello world“); bu

温馨提示

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

评论

0/150

提交评论