_字节流写数据加异常处理
-
finally:在异常处理是提供finally块来执行说有的清除操作。比如说IO流中的释放资源
特点:被finally控制的语句一定会执行,除非排除JVM退出
try{ 可能出现的异常代码; }catch(异常类名 变量名){ 异常的处理代码; }finally{ 执行所有清除操作 }
-
package demo12; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class _IO_Demo_01 { public static void main(String[] args) { /* try{ 可能出现的异常代码; }catch(异常类名 变量名){ 异常的处理代码; }finally{ 执行所有清除操作 } */ FileOutputStream fos = null; try { fos = new FileOutputStream("C:\\Users\\Alvord\\Desktop\\markdown学习\\code\\studyProject\\src\\demo12\\note_01"); fos.write("hello world".getBytes()); } catch (IOException e) { e.printStackTrace(); } finally { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } ========================================== Process finished with exit code 0 ****************************************** hello world
_字节流读数据(一次读一个字节数据)
-
需求:把文件note_02.txt中的内容读取出来在控制台输出
-
- FileInputStream :从文件系统中的文件获取输入字节
- FileInputStream(String name):通过打开与实际文件的连接来创建与i个FileInputStream,该文件由文件系统中的路径名name命名
-
使用字节输入流读取数据的步骤:
- 创建字节输入流对象
- 调用字节输入流对象的读取数据的方法
- 释放资源
-
package demo12; import java.io.FileInputStream; import java.io.IOException; public class _IO_Demo_02 { public static void main(String[] args) { /* 需求:把文件note_02.txt中的内容读取出来在控制台输出 - FileInputStream :从文件系统中的文件获取输入字节 - FileInputStream(String name):通过打开与实际文件的连接来创建与i个FileInputStream,该文件由文件系统中的路径名name命名 使用字节输入流读取数据的步骤: - 创建字节输入流对象 - 调用字节输入流对象的读取数据的方法 - 释放资源 */ FileInputStream fis = null; try { fis = new FileInputStream("C:\\Users\\Alvord\\Desktop\\markdown学习\\code\\studyProject\\src\\demo12\\note_02"); /* if (fis != null) { int read = fis.read(); System.out.print(read); System.out.println(" "+(char)read); read = fis.read(); System.out.print(read); System.out.println(" "+(char)read); } */ // 如果到达文件末尾,会返回-1 /* if (fis != null) { int read = fis.read(); while (read != -1) { System.out.print(read); System.out.println(" " + (char) read); read = fis.read(); } } */ // 优化上面的程序 int read; while ((read = fis.read()) != -1) { System.out.print(read); System.out.println(" "+(char)read); } } catch (IOException e) { e.printStackTrace(); } try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } ================================== 97 a 98 b 99 c 100 d 101 e 102 f 103 g Process finished with exit code 0 ********************************** abcdefg
_字节流复制文本文件
-
需求:把一个TXT文本文档复制到当前模块目录下
-
分析:复制文本文件,其实就是把文本文件的内容从一个文件中读取出来(数据源),然后写入另一个文件中(目的地)
-
思路:
- 根据数据源创建字节输入流对象
- 根据目的地创建字节输出流对象
- 读写数据,复制文本文件(一次读取一个字节,一次写入一个字节)
- 释放资源
-
package demo12; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class _IO_Demo_03 { public static void main(String[] args) { /* 需求:将note_03复制一份保存到当前的模块下 思路: - 根据数据源创建字节输入流对象 - 根据目的地创建字节输出流对象 - 读写数据,复制文本文件(一次读取一个字节,一次写入一个字节) - 释放资源 */ FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("C:\\Users\\Alvord\\Desktop\\markdown学习\\code\\studyProject\\src\\demo12\\note_03"); fos = new FileOutputStream("C:\\Users\\Alvord\\Desktop\\markdown学习\\code\\studyProject\\src\\demo12\\note_04"); // 读取note_03中的数据 int read; while ((read = fis.read()) != -1) { fos.write(read); } } catch (IOException e) { e.printStackTrace(); } try { fis.close(); } catch (IOException e) { e.printStackTrace(); } try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ======================================== Process finished with exit code 0 **************************************** note_03.txt 声表面滤波器是在一块具有压电效应的材料基片上蒸发一层金属膜,然后经光刻,在两端各形成一对叉指形电极组成。 当在发射换能器上加上信号电压后,就在输入叉指电极间形成一个电场使压电材料发生机械振动(即超声波)以超声波的形式向左右两边传播, 向边缘一侧的能量由吸声材料所吸收。在接收端,由接收换能器将机械振动再转化为电信号,并由叉指形电极输出。 note_04.txt 声表面滤波器是在一块具有压电效应的材料基片上蒸发一层金属膜,然后经光刻,在两端各形成一对叉指形电极组成。 当在发射换能器上加上信号电压后,就在输入叉指电极间形成一个电场使压电材料发生机械振动(即超声波)以超声波的形式向左右两边传播, 向边缘一侧的能量由吸声材料所吸收。在接收端,由接收换能器将机械振动再转化为电信号,并由叉指形电极输出。