Java输入输出(理论).ppt_第1页
Java输入输出(理论).ppt_第2页
Java输入输出(理论).ppt_第3页
Java输入输出(理论).ppt_第4页
Java输入输出(理论).ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第2章 Java输入输出,课程回顾,创建线程的两种方法是什么? 继承Thread类 实现Runnable接口 线程同步分为哪两类? 同步代码块 同步方法 线程生命周期的五种状态? 创建、就绪、运行、阻塞、终止,本章目标,掌握使用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类操作目录,File f = new File(“c:“); String str = f.list(); for(int i=0;istr.length;i+) System.out.println(stri); ,列出指定目录下的文件,列出C盘下 全部内容,使用File类操作目录,列出指定目录下的所有文件,public static void ListFiles(String path) File dir=new File(path); if(!dir.exists()|!dir.isDirectory() return;/如果是文件或不存在则直接返回 File files=dir.listFiles();/获得目录下所有File对象名称的数组 for(int i=0;i“); /给出目录名 ListFiles(filesi.getPath();/如果是目录重新调用本方法(递归) ,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 byte1024; 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();,int count=0; while(count=bufin.read(data)!=-1) bufos.write(data,0,count); ,文件到达末尾,返回-1,拷贝a文件到b文件,拷贝的文件多出上一次的部分内容。,每次只写入实际读取的数据。,4.字符流,4.1 Reader和Writer,Reader和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“); bufWriter.close(); writer.close(); FileReader reader = new FileReader(f); BufferedReader bufReader = new BufferedReader(reader); System.out.println(bufReader.readLine();,写入一行字符,读取一行字符,4.5 PrintWriter,PrintWriter是Writer的子类,其作用是将格式化对象打印到一个文本输出流,PrintWriter主要方法:print()、println()、write(),PrintWriter pw = new PrintWrite

温馨提示

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

评论

0/150

提交评论