一、File类
1.File类的构造方法
2.常用方法
import org.w3c.dom.stylesheets.DocumentStyle;
import java.io.File;
public class Demo01 {
public static void main(String[] args) {
File f1 = new File("/Users/masahiro/Desktop/Java/");
System.out.println(f1.getAbsolutePath());
System.out.println(f1.getPath());
System.out.println(f1.getName());
System.out.println(f1.length());
///Users/masahiro/Desktop/Java
///Users/masahiro/Desktop/Java
//Java
//160
}
}
3.判断功能的方法
import org.w3c.dom.stylesheets.DocumentStyle;
import java.io.File;
public class Demo01 {
public static void main(String[] args) {
File f1 = new File("/Users/masahiro/Desktop/截屏2020-10-09 上午10.44.46.png");
if(f1.exists()){
System.out.println(f1.isDirectory());//是文件夹?
System.out.println(f1.isFile());//是文件?
}
}
}
4.创建删除功能的方法
⚠️mac只能写绝对路径,不能写相对的。
=======================创建文件===================================
import org.w3c.dom.stylesheets.DocumentStyle;
import java.io.File;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
show01();
}
private static void show01() throws IOException {
File f1 = new File("/Users/masahiro/Desktop/Java/1.txt");
boolean b1 = f1.createNewFile();
System.out.println(b1);
}
}
=========================创建文件夹================================
import org.w3c.dom.stylesheets.DocumentStyle;
import java.io.File;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
show01();
}
private static void show01() throws IOException {
File f1 = new File("/Users/masahiro/Desktop/文件夹");
boolean b2 = f1.mkdirs();//创建文件夹,单级,多级用mkdirs。
System.out.println(b2);
}
}
=========================删除文件/文件夹=============================
import org.w3c.dom.stylesheets.DocumentStyle;
import java.io.File;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
show01();
}
private static void show01() throws IOException {
File f1 = new File("/Users/masahiro/Desktop/文件夹");
boolean b2 = f1.delate();//直接硬盘删除。回收站没有
System.out.println(b2);
}
}
5.遍历目录
import org.w3c.dom.stylesheets.DocumentStyle;
import java.io.File;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
show01();
}
private static void show01() throws IOException {
File f1 = new File("/Users/masahiro/Desktop/Java/02-Java语法进阶");
String[] arr = f1.list();//遍历这个文件夹里面的文件名字
File[] arr2 = f1.listFiles();//整个的路径+文件夹名字都遍历出来
for (String s : arr) {
System.out.println(s);
}
System.out.println("=========");
for (File s2 : arr2) {
System.out.println(s2);
}
}
}
二、递归
方法自己调用自己。构造方法(与类名字相同的方法,分有参构造无参构造)不能递归。
递归要来一个条件限制,否则会发生栈内存溢出
public class Demo02 {
public static void main(String[] args) {
b(1);
}
private static void b(int i) {
System.out.println(i);
if(i==10000){
return;
}
b(++i);
}
}
递归计算1-n的和
public class Demo03 {
public static void main(String[] args) {
int s = sum(3);
System.out.println(s);
}
public static int sum(int n ){
if(n==1){
return 1;
}
return n+sum(n-1);
}
}
递归计算阶乘
把上面的代码return n *sum(n-1)就行
重点:递归打印多级目录
import java.io.File;
public class Demo03 {
public static void main(String[] args) {
File file = new File("/Users/masahiro/Desktop/Java");
getAllFile(file);
}
public static void getAllFile(File dir ){
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()){
getAllFile(file);
}else {
System.out.println(file);
}
}
}
}
文件搜索:在前者的代码中添加一个if语句来判断
import java.io.File;
public class Demo03 {
public static void main(String[] args) {
File file = new File("/Users/masahiro/Desktop/Java");
getAllFile(file);
}
public static void getAllFile(File dir ){
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()){
getAllFile(file);
}else {
//只要xxx结尾的文件
//1.把file转字符串file.toString
//2.调用endWith方法(".xxx")xxx是文件后缀名
//3.if
if(file.toString().endsWith("jpg")){
System.out.println(file);
}
}
}
}
}
文件过滤器优化:
import java.io.File;
import java.io.FileFilter;
public class Demo03 {
public static void main(String[] args) {
File file = new File("/Users/masahiro/Desktop/Java");
getAllFile(file);
}
public static void getAllFile(File dir ){
File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory()||pathname.getName().endsWith("jpg");
}
});
for (File file : files) {
if (file.isDirectory()){
getAllFile(file);
}else {
System.out.println(file);
}
}
}
}