I/O
1.IO简介
1.1继承结构
in/out是相对于程序而言的输入(读取)和输出(写出)的过程。
在Java中,根据处理的数据单位不同,分为字节流和字符流
//在java.io包下
//字节流:针对二进制文件
InputStream
--FileInputStream
--BufferedInputStream
--ObjectInputStream
OutputStream
--FileOutputStream
--BufferedOutputStream
--ObjectOutputStream
//字符流:针对文本文件。读写容易发生乱码,在读写时最好指定编码集为utf-8
Writer
--BufferedWriter
--OutputStreamWriter
Reader
--BufferedReader
--InputStreamReader
--PrintWriter/PrintStream
1.2流的概念
数据的读写抽象成数据在管道中流动
1.流只能单方向流动
2.输入流用来读取(in)
3.输出流用来写出(out)
4.数据只能从头到尾顺序的读写一次
2.File文件流
2.1概述
封装一个磁盘路径字符串,对这个路径可以执行一次操作,可以用来封装文件路径、文件夹路径、不存在的路径
2.2创建对象
File file = new File(String pathname)
//通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
2.3一些方法
//文件、文件夹属性
length();文件的字节量
exists();是否存在,返回布尔值
isFile();是否为文件,返回布尔值
isDirectory();是否为文件夹,返回布尔值
getName();获取文件名、文件夹名
getParent();获取父文件夹路径
getAbsolutePath();获取文件的完整路径
//创建、删除
createNewFile();新建文件,文件夹不存在会异常,文件已存在返回false
mkdirs();新建多层不存在的文件夹\a\b\c
mkdir();新建单层不存在的文件夹\a
delete();删除文件,删除空文件夹
//文件夹列表
list();返回String[],包含文件名
listFile();返回File[],包含文件对象
//利用上述方法可以实现对文件的一系列操作
public class TestFile {
//测试文件类
//Junit单元测试方法:
//@Test + public + void + 没有参数
public static void main(String[] args) throws IOException {
//1,创建File对象,读取了指定位置的文件
File f = new File("D:\\teach\\a.txt");
//文件夹列表list() listFiles()
String[] names = f.list();//文件名
System.out.println(Arrays.toString(names));//null
File[] files = f.listFiles();//推荐,更常见
System.out.println(Arrays.toString(files));//null
//TODO常用方法
//true
System.out.println(f.createNewFile());//新建文件,文件夹不存在会异常,文件已经存在返回false
//false
System.out.println(f.mkdir());//新建单层不存在的文件夹
//false
System.out.println(f.mkdirs());//新建多层不存在的文件夹
//true
System.out.println(f.delete());//删除文件,删除空文件夹
System.out.println();
//0
System.out.println(f.length());//文件的字节量
//false
System.out.println(f.exists());//是否存在,存在返回true
//false
System.out.println(f.isFile());//是否为文件,是文件返回true
//false
System.out.println(f.isDirectory());//是否为文件夹,是文件夹返回true
//a
System.out.println(f.getName());//获取文件/文件夹名
//D:\teach
System.out.println(f.getParent());//获取父文件夹的路径
//D:\teach\a
System.out.println