javaoop——第十课笔记(第八章)

xiaoxiao2021-02-28  22

一、使用File类操作文件 1、什么是文件? 文件可认为是 相关记录放在一起的数据的集合。 2、文件一般储存在哪里? 储存在磁盘、光驱、移动硬盘等。 3、java程序如何访问文件属性? Java API :java.io.File 类

使用.File 类,访问文件的属性

注意: A:一个“\”代表根目录,因为“\”有特殊意义,所以前面需要再加上一个“\”,代表转义字符。 B:将需要操作的文件 路径传给该对象,对象就可以通过一系列方法,对这个文件进行操作了。 二、File 类常用方法

注意: A:相对路径名——相对于当前代码的路径。 B:绝对路径名——表示 完整路径 C:目录指的就是文件夹

二、字节流与字符流概述 1、 字符流的由来 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 2、字节流和字符流的 区别 A: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 B: 处理对象不同 字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。 3、结论 只要是处理 纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。

第三节:字节流读写文件 1、InputStream/OutputStream,都是抽象的读/写数据方式 2、EOF=End 读到结尾时是-1 3、FileInputStream (输入流的基本方法) 概述:该流用于从文件读取数据,可以使用 字符串类型的文件名创建一个输入流对象来读取文件 A:代码:InputStream is = new FileInputStream("res/data.xml"); B:创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。 C:读取的方式 //创建文件读入对象,传一个文件对象进去 //InputStream是一个抽象类 InputStream is = new FileInputStream(file); // //调用读的方法,返回的是一个字节,再转换成字符 // System.out.println((char)is.read()); int leng = is.read(); //如果字节读取完,则返回-1 while (leng != -1) { System.out.println((char)leng); leng = is.read();//再读取下一个字节 4、FileOutputStream( 输出流基本方法) A、概述:该类用来创建一个文件并向文件中 写数据。如果该流在打开文件进行输出前, 目标文件不存在,那么该流会创建该文件。 B、代码:OutputStream os = new FileOutputStream("res/data.xml",true) 第一个参数是文件对象, 第二个参数是是 追加还是覆盖,传入布尔值,“真”是追加 C、创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。 //第一个参数是字节数组,第二个参数是数组的下标,第三个参数是长度 os.write(arr, 0, arr.length); 5、缓冲流 BufferedInputStream(InputStream in)和BufferedOutputStream(OutputStream out) 6、二进制文件的读写 DataInputStream( InputStream in)和DataOutputStream( OutputStream out) 常用方法:writeInt()/writeDouble()/writeUTF()/read()/readUTF()/readChar等等 作用:可以读写图片、音乐、视频等。 —— —— 第四章:字符流读取文本文件 1、输入流 new FileReader(File filename):创建字符输入流对象 new FileReader(String filename):创建字符输入流对象 read():读取下一个字符 方法1: //创建一个字符输入流对象 Reader r = new FileReader("D:/a.txt"); //创建一个字符串对象 StringBuffer sb =new StringBuffer(); char[] ch = new char[4]; //没必要用循环 int leng = r.read(ch); while (leng != -1) { //使用字符串添加方法 sb.append(ch); leng = r.read(); } System.out.println(sb); 方法2: //创建一个字符输入流对象 Reader r = new FileReader("D:/a.txt"); //定义一个字符数组 char[] ch = new char[4]; System.out.println(r.read(ch));//返回的是真实的字符个数 //传一个字符类型的数组,在读取文件里信息后,会将字符存入该数组中。 //相当于,发生了一个引用传递,改变了传过去的数组 r.read(ch); for (char c : ch) { System.out.println(c); } 2、输出流 FileWriter (File filename),FileWriter (String filename):创建输出对象 FileWriter (File filename,boolean append):是追加还是覆盖 字符输入流和输出流的read和 write· 作用:提升效率方法 使用字符数组读写数据,即以字符为基本单位处理数据 代码: Writer w = new FileWriter("D:/a.txt"); w.write("中华人民共和国感谢法"); w.flush();//刷新缓存的方法 3、缓冲流 BufferedReader( Reader in)和BufferedWriter (Writer out) BufferedReader--->readLine()一次读一行 BufferedWriter--->newLine()插入换行符 输入流代码: Reader r = new FileReader("D:/a.txt"); BufferedReader br = new BufferedReader(r); String l = br.readLine(); while (l != null) { System.out.println(l); l = br.readLine(); } 4、总结 1、后产生的流,要先关。 2、关闭放在finally块中
转载请注明原文地址: https://www.6miu.com/read-2620082.html

最新回复(0)