java文件类f_JAVA基础之File类

File是个文件类,可以用其增加、删除、查找某种类型的文件或者文件夹,同时根据其成员变量的特点可以综合利用,避免出现跨系统的时候出现错误,并且查找时最好输入绝对路径,以免出现不存在的文件。使用递归时一定要主要好停止,以免栈内存溢出。

一、简述IO操作:

当需要把内存中的数据存储到持久化设备上的这个动作称为输出(写)output操作;

当把持久设备上的数据读取到内存中的这个动作称为输入(读)input操作。

这个输入和输出的动作称为IO操作。

二、File类:

1、文件类:

成员变量:

48304ba5e6f9fe08f3fa1abda7d326ab.png

import java.io.File;

public class Demo01 {

public static void main(String[] args) {

//File类

//文件:File

//目录(文件夹):directory

//路径:path

//路径分隔符(与系统有关的)

System.out.println(File.pathSeparator); // ;

//与系统有关的路径名称分隔符

System.out.println(File.separator); // \

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

2、构造函数:

48304ba5e6f9fe08f3fa1abda7d326ab.png

import java.io.File;

public class Demo02 {

public static void main(String[] args) {

File file=new File("D:\\java\\b.txt"); //双\\是转义

System.out.println(file);

File file2=new File("D:\\java","a.txt");//父路径、子路径--可以适用于多个文件的!

System.out.println(file2);

File parent=new File("D:\\java");

File file3=new File(parent,"a.txt");//File类的父路径、子路径

System.out.println(file3);

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

3、File类的获取及文件的创建和删除、判断:

48304ba5e6f9fe08f3fa1abda7d326ab.png

import java.io.File;

import java.io.IOException;

public class Demo03 {

public static void main(String[] args) throws IOException {

method06();

}

public static void method01(){

File file=new File("D:\\java\\a.txt");

//获取文件对象的绝对路径

System.out.println(file.getAbsolutePath());

File file0=new File("src");//写相对路径的话,会自动转成绝对路径,但是不去检验文件是否真实存在(只会给翻译回来,可能根本不存在) D:\JAVA0322\Day16\src

//获取文件对象的绝对路径

System.out.println(file0.getAbsolutePath());

File file00=new File("aa");//这个根本不存在 D:\JAVA0322\Day16\aa

//获取文件对象的绝对路径

System.out.println(file00.getAbsolutePath());

//获取文件对象的文件名或者目录名

System.out.println(file.getName());

//获取文件对象的路径所对应的字符串 类似于toString()方法

System.out.println(file.getPath());

//获取文件的大小(字节---Long类型)

System.out.println(file.length());

}

//文件创建和删除

public static void method02() throws IOException{

File file=new File("D:\\java\\d");

//创建文件

boolean flag=file.createNewFile();//都是创建的文件(最好都是加上后缀的),不能是文件夹

System.out.println(flag);

}

//文件删除

public static void method03(){

File file=new File("D:\\java\\d");

//删除文件(找不回来了)

boolean flag=file.delete();

System.out.println(flag);

}

//文件判断

public static void method04(){

File file=new File("D:\\java\\a.txt");

//判断该文件对象所对应的文件是否存在

System.out.println(file.exists());

//判断该文件对象是否是文件夹

System.out.println(file.isDirectory());

//判断该文件对象是否是文件

System.out.println(file.isFile());

}

//创建文件夹

public static void method05(){

File file=new File("D:\\java\\d.txt");//windows系统内文件夹名字不区分大小写,最后这个是文件夹的名字

boolean flag=file.mkdir();

System.out.println(flag);

}

//创建文件夹

public static void method06(){

File file=new File("D:\\java\\d\\a\\b");//mkdirs()用于创建多级目录,经常用的方法,不加s不能创建多级目录

boolean flag=file.mkdirs();

System.out.println(flag);

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

4、listFiles()方法介绍

48304ba5e6f9fe08f3fa1abda7d326ab.png

import java.io.File;

public class Demo04 {

public static void main(String[] args) {

method03();

}

public static void method01(){

File file=new File("D:\\java");

//获取该路径下的文件和文件夹

String[] arr=file.list();

//遍历

for(String s:arr){

System.out.println(s);//返回文件的全部的名字

}

}

public static void method02(){

File file=new File("D:\\java");

//获取该路径下的文件和文件夹所对应的文件对象

File[] files=file.listFiles();

for(File f:files){

System.out.println(f);//获得的其绝对路径---根本方法

}

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

需要注意的是:

①、指定的目录也就是文件夹必须存在;

②、指定的必须是目录。否则会空指针。

4、文件过滤器:

FileFilter 与FilenameFilter都是接口:

48304ba5e6f9fe08f3fa1abda7d326ab.png

public static void method03(){

File file=new File("D:\\java");

//获取该路径下的文件和文件夹所对应(括号内为条件,也就是某个类型)的文件对象

File[] files=file.listFiles(new MyFileFilter());

for(File f:files){

System.out.println(f);//获得的其绝对路径---根本方法

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

import java.io.File;

import java.io.FileFilter;

//过滤器:

public class MyFileFilter implements FileFilter{

public boolean accept(File pathname) {

/*//获取文件名

String filename=pathname.getName();

//判断文件名是否以.txt结尾

boolean flag=filename.endsWith(".txt");

return flag;

*/

return pathname.getName().endsWith(".txt");

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

三、递归:

在当前方法内调用自己的现象

48304ba5e6f9fe08f3fa1abda7d326ab.png

//递归

public class Demo01 {

public static void main(String[] args) {

int sum=get(100);

System.out.println(sum);

}

//用递归计算1-100的和

public static int get( int num){

if(num==1){

return 1;

}

return num +get(num-1);

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

import java.io.File;

public class Demo02 {

public static void main(String[] args) {

File file=new File("D:\\java");

look(file);

}

public static void look(File file){

//获取该路径下所有的文件夹和文件

File[] files=file.listFiles(new MyFilter());//获得.txt文件和文件夹

//遍历

for(File f:files){

//如果是文件夹则继续寻找

if(f.isDirectory()){

look(f);

}else{//如果不是则打印

System.out.println(f);

}

}

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

import java.io.File;

import java.io.FileFilter;

public class MyFilter implements FileFilter {

public boolean accept(File pathname) {

//获取以.txt为后缀的文件

//如果是文件夹,那么放到File[]数组内

if(pathname.isDirectory()){

return true;

}

return pathname.getName().endsWith(".JaVa");

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

需要注意的是:

1、要保证递归能够停下来;

2、递归次数不能太多;

3、构造方法不能递归使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值