/**
* IO流
* input
* output
* 1、文件 File
* 2、Java中IO流
* 2.1 字节流
* 2.2 字符流
* 3、Java中序列化和反序列化机制
* 4、RandomAccessFile的使用
* 5、Java8新特性 lambda表达式
* 6、Java8新特点 stream的使用
*
*
* 文件 & File类的使用
* 1、文件的概念
* 文件可以分为文本文件 二进制文件
* 2、IO流的概念
* 流是有顺序、有起点和终点的集合,是对数据传输的总称。流的本质就是用来对数据进行操作
*
* IO是我们实现的目的,实现这个目的需要利用的机制就是流机制
* (从起点 读取 写入 终点)
* 3、流的分类
* 1)按照流向 输入流 和 输出流
* 输入流指的是 从键盘 文件 鼠标读取到程序内存的过程
* 输出流指的是 从程序内存写入到磁盘 打印机 文件的过程
* 2)按照传输类型 字节流 和 字符流
* 字节流指的是传输的数据是以字节为单位的
* 字符流指的是传输的数据是以字符为单位的
* 3)按照角色 节点流和处理流(装饰器设计模式)
* 节点流指的是程序直接连接到实际的数据源
* 处理流指的是,对节点流做了一层封装,通过封装后的流来实现数据的读取和写入功能
*
* 面试题:
* 字符流和字节流的区别?
* 1)字符数据 字符流将原始数据解释成字符序列
* 文本数据存储依赖平台编码方式,字符流的输入和输出需要进行编码和解码的过程
* 2)二进制数据 字节流流将原始数据解释成二进制数据
* 读写都是以字节为单位,不需要编码和解码,比字符流效率更高
* 可移植性高
*
* File类的使用
* java.io包下 操作文件和目录 File类新建/删除/重命名,File类不能访问文件内容
* 本身,如果需要访问文件内容本身,需要用到IO流
*
* public File(String pathname)
* 路径:相对路径 绝对路径
* 相对路径 windows不带盘符的路径表示相对路径 linux 不带/
* .表示当前目录 ..表示上一级目录
* 绝对路径 完整的路径名称
*
* boolean exist 判断当前路径是否存在
* boolean isFile 当前路径对应是一个文件
* boolean isDirectory 当前路径对应是一个目录
* boolean createNewFile 在当前文件不存在的情况下,创建新文件
* boolean isHidden 判断是否是隐藏文件
* boolean delete 删除文件
* file.mkdir 创建目录
* file.getName
* file.getAbsolutePathh
* file.listFiles 获取当前目录下的所有文件 File[]
* file.list 获取当前目录下的所有文件 String[]
package FFFile;
import java.io.File;
import java.io.IOException;
public class TestDemo1 {
*/
public static void delete(File file){
if(file == null || !file.exists()){
return;
}
if(file.isFile()){
file.delete();
}else{
deleteDir(file);
}
}
public static void deleteDir(File file){
File[] files = file.listFiles();
if(files == null){
return;
}
for(File f: files){
if(f.isFile()){
f.delete();
}else{
deleteDir(f);
}
}
file.delete();
}
public static void printJavaFile(File dir){
if(dir == null || !dir.exists()){
return;
}
File[] subFiles = dir.listFiles();
if(subFiles == null){
return;
}
for(File f: subFiles){
if(f.isFile() && f.getName().endsWith(".java")){
System.out.println(f.getName());
}else{
printJavaFile(f);
}
}
}
public static void main(String[] args) {
File file1 = new File("./a.txt");
File file2 = new File("/Users/lvting/tulun/code/JAVA26/b.txt");
if(!file1.exists()){
try {
file1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
if(!file2.exists()){
try {
file2.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
File file3 = new File("./aaa");
if(!file3.exists()){
file3.mkdir();
}
File file4 = new File("./bbb");
if(!file4.exists()){
file4.mkdirs();
}
file1.delete();
file2.delete();
file3.delete();
delete(file4);
File file5 = new File("./test.txt");
if(!file5.exists()){
try {
file5.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(file5.getName());
System.out.println(file5.length());
System.out.println(file5.getAbsolutePath());
System.out.println(file5.getParentFile());
if(file5.isFile()){
System.out.println("fild5是一个file");
}else{
System.out.println("file5是一个directory");
}
System.out.println("output the .java file of JAVA26");
printJavaFile(new File("/Users/lvting/tulun/code/JAVA26/"));
}
}