java-API之File文件流
Posted 技术狂-CYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-API之File文件流相关的知识,希望对你有一定的参考价值。
创建File对象
File(String pathname) //通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
常用方法及其测试
File file = new File("F:\ioTest\1.txt"); // 本地磁盘路径
// 常见方法
System.out.println( file.length() ); // 获取文件的字节量
System.out.println( file.exists() ); // 判断文件是否存在
System.out.println( file.isFile() ); // 判断资源是否存在
System.out.println( file.isDirectory() ); // 判断资源是否是文件夹
System.out.println( file.getName() ); // 获取文件名
System.out.println( file.getParent() ); // 获取父目录
System.out.println( file.getAbsolutePath() ); // 获取 当前文件的绝对路径(全路径)
System.out.println();
file = new File("F:\ioTest\2.txt");
// 没有了创建返回true,有了不创建返回false
System.out.println( file.createNewFile() ); // 判断有没有新建成功
file = new File("F:\ioTest\x\y\z");
System.out.println( file.mkdirs() ); // 创建不存在的多级目录
file = new File("F:\ioTest\xy");
System.out.println( file.mkdir() ); // 创建一级不存在的目录
System.out.println( file.delete() ); // 删除文件 或者 空白的文件夹
//
file = new File("F:\ioTest\a");
String[] str2 = file.list() ; // 列出文件夹下面所有的资源
// [1.png, 1.txt, 2.txt],数组里放的是文件名称
System.out.println(Arrays.toString(str2));
// File[] listFiles()
// 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File[] files = file.listFiles();
System.out.println(Arrays.toString(files));
// System.out.println( file.listFiles() );
常用方法应用
递归求目录总大小
所谓递归,就是自己调用自己的一种方式。
import java.io.File;
import java.util.Scanner;
// 该类 测试 递归求目录总大小
public class Test3_Size {
public static void main(String[] args) {
// 1.接收用户输入的目录
String path = new Scanner(System.in).nextLine();
File dir = new File(path);
// 2.调用size()总大小
long sum = size(dir);
System.out.println("文件总大小:"+sum); // 370257 单位:字节
}
private static long size(File dir) {
long sum = 0;
// 1.列出所有文件夹下面的所有资源
File[] fs = dir.listFiles();
// 1.1 我们需要获取每个File对象,就需要遍历fs数组
for (int i = 0; i < fs.length; i++) {
// 2.如果是文件,把文件的字节量累加 length()
File file = fs[i];
if(file.isFile()) {
sum += file.length();
}else if(file.isDirectory()) { //3.如果是文件夹,则继续遍历文件夹里的文件,进行判断,即继续递归
sum += size(file);
}
}
// 返回文件总大小
return sum;
}
}
经过上述的是,我的指定路径的字节总数是:370257B,可以通过该文件夹右键 -> 属性,查看到的字节数和程序运行结果一致。
递归删除文件夹
代码演示:
import java.io.File;
import java.util.Scanner;
public class Test4_Delete {
public static void main(String[] args) {
// 接收用户输入的路径
String path = new Scanner(System.in).nextLine();
// 创建File对象
File dir = new File(path);
delete(dir);
System.out.println("删除成功!!!");
}
/*
* dir可以是文件路径,也可以是文件夹路径
*/
private static void delete2(File dir) {
// TODO Auto-generated method stub
if(!dir.exists()) { //如果路径不存在,直接返回
return;
}
// 1.判断是否是文件,是的话直接删除
if(dir.isFile()) {
dir.delete(); // 删除文件
} else if(dir.isDirectory()) { // 2.判断是否是目录
for(File f : dir.listFiles()) { // 2.1 遍历目录下的所有的资源(文件和文件夹)
delete(f); // 进入目录,重新检查,递归调用
}
delete(dir); // 删除外层文件夹
}
}
}
以上是关于java-API之File文件流的主要内容,如果未能解决你的问题,请参考以下文章