第一章 第三节 java 的基本语法

14
第 第第第 java 第第第第第 第 第第第第 第第第第第

description

第一章 第十三节 输入输出流. 第一章 第三节 java 的基本语法. 上节回顾. 掌握 java 中异常的概念 掌握 java 异常的分类 掌握 java 异常的捕获和处理. 本节主要内容. 掌握输入 / 输出 (I/O) 流的概念 掌握 File 类 掌握流的分类. 知识点一: 输入 / 输出 (I/O) 流的概念 在 java 中,对于数据的输入 / 输出操作以“流”( stream )的方式进行,我们利用流来从硬盘的文件中读数据到你的程序中 , 利用流来写数据到硬盘的文件 - PowerPoint PPT Presentation

Transcript of 第一章 第三节 java 的基本语法

Page 1: 第一章 第三节  java 的基本语法

第一章 第三节 java 的基本语法 第一章 第十三节 输入输出流

Page 2: 第一章 第三节  java 的基本语法

上节回顾掌握 java 中异常的概念掌握 java 异常的分类掌握 java 异常的捕获和处理

Page 3: 第一章 第三节  java 的基本语法

本节主要内容掌握输入 / 输出 (I/O) 流的概念掌握 File 类掌握流的分类

Page 4: 第一章 第三节  java 的基本语法

知识点一: 输入 / 输出 (I/O) 流的概念在 java 中,对于数据的输入 / 输出操作以“流”( stream )的方式进行,我们利用流来从硬盘的文件中读数据到你的程序中 , 利用流来写数据到硬盘的文件站在内存的角度分析 :往内存里面放信息 ---- 输入内存里的信息往外写 ---- 输出即:相对于程序而言,读进来的就叫输入流,写出去的就叫输出流

注 :Java 所有的 I/O 机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。 Java 的 I/O 流提供了读写数据的标准方法。任何 Java 中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io 是大多数面向数据流的输入 / 输出类的主要软件包

Page 5: 第一章 第三节  java 的基本语法

知识点二: FileFile 不属于流,它只是用来屏闭不同文件系统,用来统一描述文件的实体 BEAN , new File 时给它传入文件名称或是路径,它就会去根据参数查找对应的文件属性然后封装成实体File: java.io.File, 它可以创建和删除一个文件,也可以创建和删除一个空目录方法: file.createNewFile(); 创建一个新文件 file.mkdir(); 在当前目录下创建一个目录文件 file.mkdirs(); 在当前目录下,如果父目录不存在,则创建父目录,然后创建子目录

file.isFile() 和 file.isDirectory() 常用来判断一个目录或者文件是否存在

Page 6: 第一章 第三节  java 的基本语法

知识点二: File

file.isFile() 和 file.isDirectory() 常用来判断一个目录或者文件是否存在file.delete(); 删除一个文件或者目录file.list(); 得到此抽象路径下的所有目录中的文件和目录的名称,并将其放在一个 String 的数组中,

注 : File 不能够得到文件中的内容!!!

Page 7: 第一章 第三节  java 的基本语法

举例一: File file=new File(“test.txt”);// 创建一个 File 对象,此时磁盘上还没有 test.txt 文件,默认在项目文件夹下,通过 file.createNewFile(); // 该方法用来在磁盘上创建文件,名为test.txt

举例二: File file=new File(“ 视频” );

file.mkdir();// 此时将会在当前目录下创建一个“视频”的文件夹举例三: File file=new File(“D:/ 视频” );

file.mkdir();// 此时将会在 D 盘目录下创建一个“视频”的文件夹举例四: File file=new File(“D:/ 视频 / 音乐” );

file.mkdir();// 如果你的 D 盘下没有“视频”文件夹,则音乐文件夹将不能被创建,怎么办,则使用 file.mkdirs();

Page 8: 第一章 第三节  java 的基本语法

举例五: 在 C 盘下创建一个“哈哈”文件夹,如果已经存在该文件夹,则删除它,否则创建它 File file=new File("c:/ 哈哈 "); if(file.isDirectory()){ file.delete(); }else{ file.mkdir(); }举例六: 获取“哈哈”文件下的所有文件 File file=new File("c:/ 哈哈 "); String[] home=file.list(); for(int i=0;i<home.length;i++){ System.out.println(home[i]); }

Page 9: 第一章 第三节  java 的基本语法

知识点三:输入 / 输出流 既然 File 不能得到文件的具体内容,那么该如何得到文件的内容呢?引入输入 / 输出流来解决

在 Java 的中,流分为两大类:字节流和字符流(1) 字节流:有两个顶层的抽象类 : InputStream (输入流)和 OutputStream (输出流) , 由于他们都是抽象类,抽象类不能实例化,它俩对应的子类常用的是: FileInputstream和 FileOutputStream

举例:使用字节流实现文件内容的拷贝 ( 使用已经存在的节点流来构造,提供带缓冲的读写,提高读写的效率 ) :

Page 10: 第一章 第三节  java 的基本语法

public static void main(String[] args) throws IOException {FileInputStream fis=new FileInputStream("C:/ 我的手机谷歌账户 .txt");// 获取源文件

BufferedInputStream bis=new BufferedInputStream(fis);// 进入过滤流:即字节缓冲流,读取资源的效率高

FileOutputStream fos=new FileOutputStream("D:/ 新建 文本文档 .txt");// 放入目标文件中BufferedOutputStream bos=new BufferedOutputStream(fos);//进入过滤流:即字节缓冲流

byte[] b=new byte[1024];// 作为缓冲区,大小为 1Kint len;// 保存读到的实际字节数while((len=bis.read(b))!=-1){bos.write(b, 0, len);// 第一个参数:即得到缓冲区数组,第二个:从第几个开始,第三个:读取的长度bos.flush();// 清空缓冲区,一定要写}}

Page 11: 第一章 第三节  java 的基本语法

(2) 字符流:为什么要引出字符流?原因:字节流是由字节组成的,字符流是由字符组成的,一个字符占两个字节。扩展:字节流是最基本的,所有的 InputStream 和OutputStream 的子类都是 , 主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的 encode 来处理,也就是要进行字符集的转化

我们知道,在计算机中存放的就是一堆二进制,那它是如何来表示一个字符,数字,字母等?这就要靠编解码了,字符流就可以用来解决字符编码的问题,使用它,可以保证解码统一,防止出现乱码。比如字符 ’ A’,采用 ASCII码标准码为 0x41仍然有两个顶层的抽象类 : Reader( 字符输入流 ) 和 Writer (字符输出流)

Page 12: 第一章 第三节  java 的基本语法

图例:字符输入流

Page 13: 第一章 第三节  java 的基本语法

图例:字符输出流

Page 14: 第一章 第三节  java 的基本语法

举例:// 往 rrr.txt记事本中写入字符BufferedWriter bufw = new BufferedWriter(new FileWriter("C:/rrr.txt")); bufw.write("abcde"); bufw.newLine(); bufw.write("fg"); bufw.flush(); bufw.close();// 从 rrr.txt 中读取字符BufferedReader bufr = new BufferedReader(new FileReader("C:/rrr.txt")); String line = null; while( null != ( line = bufr.readLine()) ) { System.out.println("read line:" + line); } bufr.close();