IO流小结
1.File类
-
文件和目录路径名的抽象表示。
-
文件和目录是可以通过File封装成对象的
-
对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。**它可以是存在的,也可以是不存在的.**将来是要通过具体的操作把这个路径的内容转换为具体存在的
构造方法-
-
File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的File
实例。File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的File
实例。File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的File
实例。
-
-
public class FileDemo01 {
public static void main(String[] args) {
File f = new File("F:\\Java学习\\黑马资料\\JavaEE资料和习题\\资料");
System.out.println(f);
}
}
File类创建功能(先创建目录,在创建文件)
public boolean createNewFiLe(): 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
如果文件不存在,就创建文件,并返回true
如果文件存在,就不创建文件,并返回false
public booLean mkdir( ): 创建由此抽象路径名命名的目录
public boolean mkdirs ( ): 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录
public class FileDemo02 {
public static void main(String[] args) throws IOException {
//需求1:我要在F:\\test目录下创建一个文件java.txt
//需求2:我要在F:\\test目录下创建一个目录JavaSE
//需求3:我要在F:\\test目录下创建一个多级目录JavawEB\\HTML
//需求4:我要在F:\\test目录下创建一个文件javase.txt
//需求1:我要在F:\\test目录下创建一个文件java.txt
File f1 = new File("F:\\test\\java.txt");
System.out.println(f1.createNewFile());
// 需求2我要在F:\\test目录下创建一个目录JavaSE
File f2 = new File("F:\\test\\JavaSE");
System.out.println(f2.mkdir());
//需求3:我要在F:\\test目录下创建一个多级目录JavawEB\\HTML
File f3 = new File("F:\\test\\JavaEB\\HTML");
System.out.println(f3.mkdirs());
//需求4。我要在F:\\test目录下创建一个文件javase.txt
File f4 = new File("F:\\test\\java.txt");
System.out.println(f4.mkdir());
}
}
File类的判断和获取功能
public boolean isDirectory() 测试此抽象路径名表示的File是否为目录
public boolean isFile() 测试此抽象路径名表示的File是否为文件
public boolean exists() 测试此抽象路径名表示的File是否存在
public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串 F:\test\JavaSE\java.txt
public String getPath() 将此抽象路径名转换为路径名字符串 JavaSE\java.txt
public String getName() 返回由此抽象路径名表示的文件或目录的名称 java.txt
public String[] list() 返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
publicFile[] listFiles() 返回此抽象路径名表示的目录中的文件和日录的File对象数组
File类的删除功能
public boolean delete() 删除由此抽象路径名表示的文件或目录
绝对路径和相对路径的区别
绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。
例如: E:\itcast\lJjava.txt
相对路径:必须使用取自其他路径名的信息讲行解释。
例: myFile\iava.txt
递归
方法定义中调用方法本身的现象。
递归解决问题的思路:
把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
递归解决问题要找到两个内容:
递归出口:否则会出现内存溢出
递归规则:与原问题相似的规模较小的问题
递归求阶乘
需求:用递归求5的阶乘,并把结果在控制台输出
分析:
阶乘:一个正整数的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n!
5!= 54321
递归出口:1!=1递归规则: n!=n*(n-1)!
5!= 5*4!
public class JcDemo {
public static void main(String[] args) {
int i = jc(5);
System.out.println(i);
}
public static int jc(int n){
if (n == 1) {
return 1;
}else {
return n*jc(n-1);
}
}
}
//结果120
遍历目录
需求
给定一个路径(E\Vitcast),请通过递归完成遍历该目录下的所有内容,并把所有文件的绝对路径输出在控制台
思路:
根据给定的路径创建一个File对象
定义一个方法,用于获取给定目录下的所有内容,参数为第1步创建的File对象获取给定的File目录下所有的文件或者目录的File数组
遍历该File数组,得到每一个File对象
判断该File对象是否是目录
是:递归调用
不是:获取绝对路径输出在控制台调用方法
public class JcDemo02 {
public static void main(String[] args) {
File f = new File("F:\\");
getAllFile(f);
}
public static void getAllFile(File file) {
File[] listArray = file.listFiles();
if (listArray != null) {
for (File f : listArray) {
if (f.isDirectory