版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、day10【字节流、字符流】主要内容字节流字符流异常处理Properties教学目标能够使用字节输入流数据到程序能够理解数据(byte)的原理能够使用字节流完成文件的能够使用FileWirter写数据到文件能够说出FileWriter中关闭和刷新能够使用FileWriter写数据的5个的区别能够使用FileWriter写数据实现换行和追加写能够使用File能够使用Fileer读数据er读数据一次一个字符数组能够使用Properties的load第一章 字节流加载文件中配置1.1 字节输入流【InputStream】java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可
2、以字节到内存中。它定义了字节输入流的基本共性功能。此输入流并: 从输入流: 从输入流中与此流相关联的任何系统资源。数据的下一个字节。一些字节数,并将它们到字节数组 b中 。小贴士:1.2 FileInputStream类java.io.FileInputStream 类是文件输入流,从文件中字节。构造市昌平区建材城西路龙办公楼一层:public void():关闭public abstract int()public int(byte b) FileInputStream(File file) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 Fi
3、le对象 le命名。 FileInputStream(String name) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有该文件,会抛出 FileNotFoundException 。构造举例,代码如下:字节数据1. 字节: ,每次可以 一个字节的数据,提升为int类型, 到文件末尾,返回 -1 ,代码使用演示:public class FIS public static void main(String args) throws IOException/ 使
4、用文件名称创建流对象FileInputStream fis = new FileInputStream( .txt);/ 数据,返回一个字节int = fis. ();System.out.println(char) );= fis. ();System.out.println(char) );= fis. ();System.out.println(char) );= fis. ();System.out.println(char) );= fis. ();System.out.println(char) );/ 到末尾,返回1= fis. ();System.out.println( );
5、/ 关闭资源fis. ();输出结果:a b cd市昌平区建材城西路 龙办公楼一层 :public class FileInputStreamConstructor throws IOException public static void main(String args) / 使用File对象创建流对象File file = new File(a.txt);FileInputStream fos = new FileInputStream(file);/ 使用文件名称创建流对象FileInputStream fos = new FileInputStream(b.txt);循环改进 方式,
6、代码使用演示:public class FIS public static void main(String args) throws IOException/ 使用文件名称创建流对象FileInputStream fis = new FileInputStream( .txt);/ 定义变量,保存数据int b ;/ 循环while (b = fis. ()!=1) System.out.println(char)b);/ 关闭资源fis. ();输出结果:a b c d e小贴士:1. 虽然 了一个字节,但是会自动提升为int类型。2. 流操作完毕后,必须 系统资源,调用 ,2. 使用字节
7、数组 : (byte b) ,每次 b的长度个字节到数组中,返回 到的有效字节个数,读取到末尾时,返回 -1 ,代码使用演示:public class FIS public static void main(String args) throws IOException/ 使用文件名称创建流对象.FileInputStream fis = new FileInputStream( .txt); / 文件中为abcde/ 定义变量,作为有效个数int len ;/ 定义字节数组,作为装字节数据的容器byte b = new byte2;/ 循环while ( len= fis. (b)!=1)
8、/ 每次 后,把数组变成字符串打印System.out.println(new String(b);/ 关闭资源fis. ();输出结果:市昌平区建材城西路 龙办公楼一层 :e1错误数据 d ,是由于最后一次 时,只 一个字节 e ,数组中,上次 的数据没有被完全替换,所以要通过 len ,获取有效的字节,代码使用演示:public class FIS public static void main(String args) throws IOException/ 使用文件名称创建流对象.FileInputStream fis = new FileInputStream( .txt); / 文
9、件中为abcde/ 定义变量,作为有效个数int len ;/ 定义字节数组,作为装字节数据的容器byte b = new byte2;/ 循环while ( len= fis. (b)!=1) / 每次 后,把数组的有效字节部分,变成字符串打印System.out.println(new String(b,0,len);/ len 每次 的有效字节个数/ 关闭资源fis. ();输出结果:ab cd e小贴士:使用数组 ,每次 多个字节,减少了系统间的IO操作次数,从而提高了读写的效率,建议开发中使用。1.3 字节流练习:图片原理图解市昌平区建材城西路 龙办公楼一层 :ab cd ed案例实
10、现图片文件,代码使用演示:小贴士:流的关闭原则:先开后关,后开先关。第二章 字符流市昌平区建材城西路 龙办公楼一层 :public class Copy public static void main(String args) throws IOException / 1.创建流对象/ 1.1 指定数据源FileInputStream fis = new FileInputStream(D:test.jpg);/ 1.2 指定目的地FileOutputStream fos = new FileOutputStream(test_copy.jpg);/ 2.读写数据/ 2.1 定义数组byte
11、b = new byte1024;/ 2.2 定义长度int len;/ 2.3 循环while (len = fis. (b)!=1) / 2.4 写出数据fos.write(b, 0 , len);/ 3.关闭资源fos. ();fis. ();当使用字节流 文本文件时,可能会有一个小问题。就是遇到中文字符时,可能 显示完整的字符,那是因为一个中文字符可能占用多个字节 。所以Java提 字符流类,以字符为 读写数据,专门用于处理文本文件。2.1 字符输入流【 er】java.io. er 抽象类是表示用于 字符流的所有类的超类,可以 字符 到内存中。它定义了字符输入流的基本共性功能 。pu
12、blic void () :关闭此流并 与此流相关联的任何系统资源。public int () : 从输入流 一个字符。public int (char cbuf) : 从输入流中 一些字符,并将它们 到字符数组 cbuf中 。2.2 File er类java.io.File er 类是 字符文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。小贴士:1. 字符编码:字节与字符的对应规则。Windows系统的中文编码默认是GBK编码表。idea中UTF-82. 字节缓冲区:一个字节数组,用来临时 字节数据。构造File er(File file) : 创建一个新的 File er ,给
13、定要 的File对象。File er(String fileName) : 创建一个新的 File er ,给定要 的文件的名称。当你创建一个流对象时,必须传入一个文件路径。类似于FileInputStream 。构造举例,代码如下:public class File erConstructor throws IOException public static void main(String args) / 使用File对象创建流对象File file = new File(a.txt);File er fr = new File er(file);/ 使用文件名称创建流对象File er
14、fr = new File er(b.txt);字符数据1. 字符:取,代码使用演示:,每次可以 一个字符的数据,提升为int类型, 到文件末尾,返回 -1 ,循环读public class FR public static void main(String args) throws IOException / 使用文件名称创建流对象市昌平区建材城西路 龙办公楼一层 :File er fr = new File er( .txt);/ 定义变量,保存数据int b ;/ 循环while (b = fr. ()!=1) System.out.println(char)b);/ 关闭资源fr. (
15、);输出结果: 黑马程序员小贴士:虽然 了一个字符,但是会自动提升为int类型。2. 使用字符数组 : (char cbuf) ,每次 b的长度个字符到数组中,返回 到的有效字符个数, 到末尾时,返回 -1 ,代码使用演示:获取有效的字符改进,代码使用演示:市昌平区建材城西路 龙办公楼一层 :public class FIS public static void main(String args) throws IOException / 使用文件名称创建流对象File er fr = new File er( .txt);/ 定义变量,保存有效字符个数int len ;public clas
16、s FR public static void main(String args) throws IOException / 使用文件名称创建流对象File er fr = new File er( .txt);/ 定义变量,保存有效字符个数int len ;/ 定义字符数组,作为装字符数据的容器char cbuf = new char2;/ 循环while (len = fr. (cbuf)!=1) System.out.println(new String(cbuf);/ 关闭资源fr. ();输出结果:程序员序2.3 字符输出流【Writer】 java.io.Writer 抽象类是表示
17、用于写出字符流的所有类的超类,将指定的字符 写出到目的地。它定义了字节输出流的基本共性功能 。public abstract void () :关闭此输出流并 与此流相关联的任何系统资源。 public abstract void flush() :刷新此输出流并强制任何缓冲的输出字符被写出。 public void write(int c) :写出一个字符。 public void write(char cbuf) :将 b.length字符从指定的字符数组写出此输出流。 public abstract void write(char b, int off, int len) :从指定的字符
18、数组写出 len字符,从偏移量o开始输出到此输出流。 public void write(String str) :写出一个字符串。2.4 FileWriter类 java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。构造 FileWriter(File file) : 创建一个新的 FileWriter,给定要 的File对象。 FileWriter(String fileName) : 创建一个新的 FileWriter,给定要 的文件的名称。当你创建一个流对象时,必须传入一个文件路径,类似于FileOutputStream。构造举
19、例,代码如下:市昌平区建材城西路 龙办公楼一层 :/ 定义字符数组,作为装字符数据的容器char cbuf = new char2;/ 循环while (len = fr. (cbuf)!=1) System.out.println(new String(cbuf,0,len);/ 关闭资源fr. ();输出结果: 程序员基本写出数据写出字符: write(int b) ,每次可以写出一个字符数据,代码使用演示:小贴士:1. 虽然参数为int类型四个字节,但是只会保留一个字符的 写出。2. 未调用关闭和刷新因为内置缓冲区的 ,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续
20、写出数据的。如果我们既想写出数据,又想继续使用流,就需要 flush 了。flush :刷新缓冲区,流对象可以继续使用。:关闭流, 系统资源。关闭前会刷新缓冲区。代码使用演示:市昌平区建材城西路 龙办公楼一层 :public class FWWrite public static void main(String args) throws IOException public class FWWrite public static void main(String args) throws IOException / 使用文件名称创建流对象FileWriter fw = new FileWri
21、ter(fw.txt);/ 写出数据fw.write(97); / 写出第1个字符fw.write(b); / 写出第2个字符fw.write(C); / 写出第3个字符fw.write(30000); / 写出第4个字符,中文编码表中30000对应一个汉字。/*【注意】关闭资源时,与FileOutputStream不同。如果不关闭,数据只是保存到缓冲区,并未保存到文件。*/ fw. ();输出结果:abC田public class FileWriterConstructor public static void main(String args) throws IOException / 使
22、用File对象创建流对象File file = new File(a.txt); FileWriter fw = new FileWriter(file);/ 使用文件名称创建流对象FileWriter fw = new FileWriter(b.txt);小贴士:即便是ush 写出了数据,操作的最后还是要调用写出其他数据1. 写出字符数组 : write(char cbuf) 和 write(char cbuf, int off, int len) ,每次可以写出字符数组中的数据,用法类似FileOutputStream,代码使用演示:2. 写出字符串: write(String str)
23、和 write(String str, int off, int len) ,每次可以写出字符串中的数据,更为方便,代码使用演示:市昌平区建材城西路 龙办公楼一层 :public class FWWrite public static void main(String args) throws IOException / 使用文件名称创建流对象FileWriter fw = new FileWriter(fw.txt);/ 字符串String msg = 程序员;/ 写出字符数组public class FWWrite public static void main(String args)
24、throws IOException / 使用文件名称创建流对象FileWriter fw = new FileWriter(fw.txt);/ 字符串转换为字节数组char chars = 程序员.toCharArray();/ 写出字符数组fw.write(chars); / 程序员/ 写出从索引2开始,2个字节。索引2是程,两个字节,也就是程序。fw.write(b,2,2); / 程序/ 关闭资源fos. ();/ 使用文件名称创建流对象FileWriter fw = new FileWriter(fw.txt);/ 写出数据,通过flush fw.write(刷); / 写出第1个字
25、符fw.flush();fw.write(新); / 继续写出第2个字符,写出fw.flush();/ 写出数据,通过fw.write(关); / 写出第1个字符fw. ();fw.write(闭); / 继续写出第2个字符,【报错】java.io.IOException: Stream d fw. ();3. 续写和换行:操作类似于FileOutputStream。小贴士:字符流,只能操作文本文件,不能操作图片, 等非文本文件。当我们单纯读或者写文本文件时 使用字符流 其他情况使用字节流第三章 IO异常的处理JDK7前处理之前的入门练习, 把异常抛出,而实际开发中并不能这样处理,建议使用 t
26、ry.catch.finally 代码块,处理异常部分,代码使用演示:市昌平区建材城西路 龙办公楼一层 :public class HandleException1 public static void main(String args) / 变量 FileWriter fw = null; try /创建流对象fw = new FileWriter(fw.txt);/ 写出数据fw.write( 程序员); / 程序员 catch (IOException e) public class FWWrite public static void main(String args) throws
27、IOException / 使用文件名称创建流对象,可以续写数据FileWriter fw = new FileWriter(fw.txt,true);/ 写出字符串fw.write( );/ 写出换行fw.write(rn);/ 写出字符串fw.write(程序员);/ 关闭资源fw. ();输出结果: 程序员fw.write(msg); / 程序员/ 写出从索引2开始,2个字节。索引2是程,两个字节,也就是程序。fw.write(msg,2,2); / 程序/ 关闭资源fos. ();JDK7的处理还可以使用JDK7优化后的 try-with-resource 语句,该语句确保了每个资源在
28、语句结束时关闭。所谓的资源(resource)是指在程序完成后,必须关闭的对象。格式:代码使用演示:第四章 属性集4.1 概述java.util.Properties 继承于 Hashtable ,来表示一个持久的属性集。它使用键值结构 数据,每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时, System.getProperties 就是返回一个 Properties 对象。4.2 Properties类市昌平区建材城西路 龙办公楼一层 :public class HandleException2 public static void main(String a
29、rgs) / 创建流对象try ( FileWriter fw = new FileWriter(fw.txt); ) / 写出数据fw.write( 程序员); / 程序员 catch (IOException e) e.printStackTrace();try (创建流对象语句,如果多个,使用;隔开) / 读写数据 catch (IOException e) e.printStackTrace();e.printStackTrace(); finally try if (fw != null) fw. (); catch (IOException e) e.printStackTrace
30、();构造public Properties() :创建一个空的属性列表。基本的: 保存一对属性。public Object setProperty(String key, String value)public String getProperty(String key) :使用此属性列表中指定的键搜索属性值。:所有键的名称的集合。public Set stringPropertyNames()public class ProDemo public static void main(String args) throws FileNotFoundException / 创建属性集对象Properties properties = new Properties();/ 添加键值对元素properties.setProperty(filename, a.txt); properties.setProperty(length, 209385038); properties.setProperty(location, D:a.txt);/ 打印属性集对象System.out.println(properties);/ 通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河北省沙河市重点中学初三第四次调研诊断考试物理试题理试题含解析
- 护理小组长团队培训计划
- 2026年大学大一(教育学)教育法律法规基础测试题及答案
- 护理人员的专业技能与操作规范
- 2025年前台电子入住礼仪模拟
- 护理自考考试技巧与经验
- 护理礼仪与医疗纠纷预防
- 急诊科护理记录与文书管理
- 护理讲师课件内容广度
- 专题二 选区的创建与编辑(课件)-职教高考电子与信息《图形图像处理》专题复习讲练测
- 办公室员工绩效考核评分细则
- 厘米和米的换算及应用
- 2025年11月1日安徽省直遴选面试真题及解析
- 拒绝校园欺凌+课件-2025-2026学年上学期主题班会
- GB/T 9722-2023化学试剂气相色谱法通则
- 2025年中考语文(湖南卷)真题详细解读及评析
- GB/T 9944-2025不锈钢丝绳
- 2025高考历史小论文10种题型范文
- 2025版煤矿安全规程宣贯培训课件
- 鱼腥草种植课件
- 2025年城市垃圾转运站运营成本分析初步设计评估报告
评论
0/150
提交评论