文件的异常处理
文件的异常处理
try…catch..finally异常处理
1234567try { 可能出现异常的代码;}catch(异常类名, 变量名) { 异常的处理代码;}finally { 执行所有清除操作;}
123456789101112131415161718192021222324252627282930313233343536/** * try...catch..finally异常处理 */public static void fileMethod() { FileReader fileReader = null; FileWriter fileWriter = null; try { fileReader = new FileReader("fr.txt"); fileWriter = new FileWriter("fw.txt"); char[] chars = new char[1024]; int len; while ((len = fileReader.read(c ...
File
1.1 File类概述和构造方法File:它是文件和目录路径的抽象表示
文件和目录是可以通过File封装成对象的
对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
方法名
说明
File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的File实例输出返回路径字符串
File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的File实例输出返回路径字符串
File(File parent, String child)
从父抽象路径和子路径名字符串创建新的File实例输出返回路径字符串
123456789101112131415161718192021222324package com.demo.file;import java.io.File;/** * @author jingLv * @date 2020/11/19 */public class FileD ...
IO流
IO流概述和分类IO流概述:
IO:输入/输出(Input/Output)
流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输成为流,流的本质是数据传输
IO流就是用来处理设备间数据传输问题的
常见应用:文件固执、文件上传、文件下载
IO流分类:
按照数据的流向
输入流:读数据
输出流:写数据
按照数据类型
字节流:
输入字节流
输出字节流
字符流:
输出字符流
输入字符流
一般来书,我们说IO流的分类是安装数据类型来分的
特殊操作流
4.1标准输入输出流System类中有两个静态的成员变量:
public static final InputStream in:标准输入流,通常该流对应键盘输入或由主机环境或用户指定的另一个输入源
public static final PrintStream out:标准输出流,通常该流对应于显示输出或由主机环境或用户指定的另一个输出目标
标准输入流自己实现键盘录入数据:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
写起来太麻烦,Java就提供了一个类实现键盘录入
Scanner scanner = new Scanner(System.in);
1234567891011121314151617181920212223242526272829303132333435363738394041package com.demo.system;import java.io.BufferedReader;import java.io.IOExcepti ...
字节流
字节流抽象基类
InputStream:这个抽象类是表示字节输入流的所有类的超类
OutputStream:这个抽象类是表示字节输出的所有类的超类
子类名特点:子类名都是以其父类作为子类名的后缀
2.1字节流写数据2.1.1字节流输出的构造方法
方法名
说明
FileOutputStream(String name)
创建文件输出流以指定的名称写入文件
FileOuptStream(File file)
创建文件输出流吸入指定的File对象表示文件中
这两个FileOutputStream的区别,先查看FileOutputStream(String name)的源码,如下:
123456789101112131415161718192021222324/** * Creates a file output stream to write to the file with the * specified name. A new <code>FileDescriptor</code> object is * created to r ...
字节流实战之复制
1. 复制文本文件
复制文本文件,其实就把文本文件的内容从一个文件中读取出来(数据源),然后写入到另一个文件中(目的地)
思路:
根据数据源创建字节输入流对象
根据目的地创建字节输出流对象
读写数据,复制文本文件(一次读取一个字节,一次写入一个字节)
释放资源
1234567891011121314151617181920212223242526272829package com.demo.bytes;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/** * 复制文本文件 * * @author jingLv * @date 2020/12/02 */public class CopyTxtDemo { public static void main(String[] args) throws IOException { // 根据数据源创建字节输入流对象 FileInputStream fileInputStre ...
字符流
3.1为什么会有字符流由于字节流操作中文不是特别的方便,所以Java就提供字符流
字符流 = 字节流 + 编码表
用字节流复制文本时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别是中文的呢?
汉字在存储的时候,无论哪种编码存储,第一个字节都是负数
3.2编码表基础知识:
计算机中存储的信息都是二进制数表示的,我们在屏幕上看到的英文、汉字等字符都是二进制数转换之后的结果
按照某种规则,将字符存储到计算机找那个,称为编码,反之,将存储在计算机中的二进制数按照某种规则解析显示出,称为解码,这里强调一下:按照A编码存储,必须按照A编码解析,这样才能显示正确的文本符号,否则就会导致乱码现象
字符编码:就是一套自然语言的字符与二进制之间的对应规则(如:A,65)
字符集:
是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等
计算机要准确的存储和识别各种字符集符号,就要进行字符编码,一套字符集必然至少有一套字符编码,常见字符集有ASCII字符集、GBXXX字符集、Unicode字符集等
ASCII字符集:
ASCII ...
字符流实战之复制
1.复制文件思路:
根据数据源创建字符输入流对象
根据目的地创建字符输出流对象
读写数据,复制文件
释放资源
123456789101112131415161718192021222324252627282930313233package com.demo.chars;import java.io.*;/** * @author jingLv * @date 2020/12/11 */public class CopyJavaDemo { public static void main(String[] args) throws IOException { // 根据数据源创建字符输入流对象 InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("java-file-class/ConversionStreamDemo.java")); // 根据目的地创建字符输出流对象 OutputStreamWriter out ...
集合与文件实战
集合到文件把ArrayList集合中的字符串数据写入到文本文件中,要求:每一个字符串元素作为文件中的一行数据
思路:
创建ArrayList集合
往集合中存储字符串元素
创建字符缓冲输出流对象
遍历集合,得到每一个字符串数据
调用字符缓冲输出流对象的方法写数据
释放资源
123456789101112131415161718192021222324252627282930313233package com.demo.chars;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;/** * @author jingLv * @date 2020/12/14 */public class ArrayListToTxtDemo { public static void main(String[] args) throws IOException { // 1. 创建ArrayList集合 ...
复制文件实战
复制单级文件夹把/test文件夹(包含文件夹里面的内容)复制到模块目录下
思路:
创建数据源目录File对象,路径是:/test
获取数据源目录File对象的名称(test)
创建目的地目录File对象,路径名是模块名+test组成(file-class/test)
判断目的地的目录对应的File是否存在,如果不存在,就创建
获取数据源目录下所有文件的File数组
遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件
数据源文件:/test/image.jpg
获取数据源文件File对象的名称(image.jpg)
创建目的地文件File对象,路径名是目的地目录+image.jpg组成(file-class/test/image.jpg)
复制文件
由于文件不仅仅是文本文件,还有图片,视频等文件,所以采用字节流复制文件
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152package com.demo.cases ...