在日常工作中,经常需要操作一些文件,包括文件的读取和保存!下面简单的了解下file类和字节流!最后再通过一个文件拷贝的小功能,来实践一下!
File->>>>是一种文件和文件路径的一种抽象表示
主要用于建立连接
File类的常用方法
File file = new File("D:/Game/1.png");
Boolean exists = file.exists();//判断 文件/文件夹 是否存在
String fileName = file.getName();//返回 文件/文件夹的名称
String path = file.getPath();//返回路径 如果是绝对路径返回绝对路径 如果是相对路径 返回相对路径
String absolutePath = file.getAbsolutePath();//返回绝对路径;
Boolean isFile = file.isFile();//判断是不是文件
Boolean isDirectory = file.isDirectory();//判断是不是文件夹
file.delete();//删除文件
Boolean mkdir = file.mkdir();//创建 文件/文件夹 注意只创建当前一级 如果上级不存在 创建失败
Boolean mkdirs = file.mkdirs();//创建 文件/文件夹 创建全部 如果上级不存在 则创建上级 以此类推
IO流
如果把文件比作水,那么·File就相当于在水和你之间建立某种关系(你拿着一瓶农夫山泉), 那么IO流就好比在这之上建立管道(你用吸管连接了 农夫山泉和你的嘴) 输入流就是你喝水 输出流就是你往里面吐水(输入输出流是以程序为中心的,把数据读取到程序中为输入,反之输出)!
流又大致分为两种 字节流和字符流
字节流:操作文件的字节(byte):可以操作所有文件(视频、音频、word、excel、纯文本。。。)
字符流:操作文件的字符(char):只能纯文本
下面主要介绍字节流的使用 当然字节流有很多实现类,这里我们介绍重点实现!
InputStream inputStream = new FileInputStream(new File("d:/1.png"));//输入字节流
通过inputStream.read(byte [])的方法 读取byte数组长度的字节到byte[]中
例如
byte [] b = new byte[1024]
inputStream.read(b);//从文件中读取1024长度的字节到b中
read方法有返回值 具体读取了多少个就返回多少
比如第一次读取了1024个 第二次没有那么多了只有500个字节了 那么第二次就只能读取500个 返回读取字节数500 第三次读取没有数据了返回-1
OutputStream outputStream = new FileOutputStream(to);//输出字节流
通过outputStream.write(b,0,lent);方法把字节数组写入到目标文件中去
b:字节数组 后面两个参数依次是 从字节数组的0下标开始 写入lent长度的字节(相对于b来说的)
注意:输出流只有管道缓存字节满了之后才会输出出去,没有满则会停留在管道里
只有在关闭时或者手动的输出才可以把余下的字节数据输出到目标文件中
outputStream.flush(); 强制输出管道里的缓存字节
以上两种流在用完之后都必须调用 close()方法来关闭流从而释放占用的资源
关闭流遵循了后声明的先关闭的原则 即你创建流的顺序 越往后创建的你要先关闭 第一个创建的最后一个关闭!
第二节我们会写一个文件拷贝的小功能 用来实践学习成果