javaSE21-- IO流--File类

IO流

  • 是java.io包中很重要的一个类;

  • File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录;

  • File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等;

    File对象无法操作文件的具体数据,既不能直接对文件进行读写/操作

    //在当前目录下创建一个与aaa.txt文件名相关联的文件对象
    File f1 = new File("aaa.txt");
    //指明详细的路径以及文件名,请注意双斜线或用反斜杠
    File f2 = new File("D:\\Java\\Hello.java");
    //指明详细的路径以及目录名,请注意双斜线
    File f3 = new File("D:\\Java");
    

构造方法 一

 File f = new File("E/naho.txt");//绝对路径
        File f1 = new File("niiiho.txt");//相对路径

构造方法 二

String parent = "E:\\";
File f2 = new File(parent,"demo.txt");
File f3 = new File(parent,"test.txt");

构造方法 三

File file1 = new File("EE:\\");
File file2 = new File(file1, "nihao.text");

File fff = new File("E:\\niaho.txt");
 

file常用的方法

  • [canExecute] 测试应用程序是否可以执行此抽象路径名表示的文件。
  • [canRead] 测试应用程序是否可以读取此抽象路径名表示的文件。
  • [canWrite] 测试应用程序是否可以修改此抽象路径名表示的文件。
  • isAbsolute() 测试这个抽象路径名是否是绝对的。
  • isHidden()` 测试此抽象路径名命名的文件是否为隐藏文件。
  • isDirectory()` 测试此抽象路径名表示的文件是否为目录
  • isFile()` 测试此抽象路径名表示的文件是否为普通文件。
  • exists()` 测试此抽象路径名表示的文件或目录是否存在。
  • length() 返回由此抽象路径名表示的文件的长度。
  • getAbsoluteFile()` 返回此抽象路径名的绝对形式。
  • getName()返回由此抽象路径名表示的文件或目录的名称
  • getParent()返回此抽象路径名的父null`的路径名字符串,如果此路径名未命名为父目录,则返回null。
  • listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
public static void main(String[] args) {

        File f = new File("E:\\demo.txt");

            System.out.println(f.canExecute());
            System.out.println(f.canRead());
            System.out.println(f.canWrite());
            System.out.println(f.isAbsolute());
            System.out.println(f.isHidden());
            System.out.println(f.isDirectory());
            System.out.println(f.isFile());
            System.out.println(f.exists());
            System.out.println(f.length());//字节单位

            long t =  f.lastModified();
            System.out.println(DateUtil.dateToString(t));

            System.out.println(f.getAbsolutePath());
            System.out.println(f.getName());
            System.out.println(f.getParent());
    }

f3.createNewFile();

创建文件夹

File f = new File("E:\\demo.txt")

try {
            f.createNewFile();//创建
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("路径不正确");
        }

file4.mkdirs();//创建多级

File file4 = new File("E:\\lajiii\\demo\\dsda");
file4.mkdirs();//创建多级

file4.delete();

//f1.delete();//删除文件夹时,文件夹中必须为空
只能一级一级进行删除

FileFilter文件过滤

File ff = new File("F:\\Users\\LENOVO\\Desktop");
File[] fs = ff.listFiles(new MyFileFilter());//获得指定目录下面的文件
for (File f0:fs) {
System.out.println(f0);

}
import java.io.File;
import java.io.FileFilter;

public class MyFileFilter implements FileFilter {
    @Override
    public boolean accept(File pathname) {
        return pathname.toString().endsWith(".md");//
    }
}
创建File对象
File f1 = new File("d:/java");
		f1.mkdir(); 			//创建文件夹
		
		File f2 = new File("d:/java/sub1");
		f2.mkdir();
		
		File f3 = new File("d:/java", "sub2");
		f3.createNewFile(); 		//创建文件
		
		File f4 = new File(f2, "sub3");
		f4.createNewFile();
		
查看文件的属性
File f1 = new File("hehe.avi");		//相对路径,要项目目录下的文件
		f1.createNewFile();
		
		System.out.println( f1.getAbsolutePath() );	//返回绝对路径(从根目录开始的路径 )
		System.out.println( f1.getPath() );			//返回路径 
		System.out.println( f1.getParent() );		//返回上一级文件夹
		System.out.println( f1.getName() );			//对象名
		System.out.println( f1.length());			//文件大小
		System.out.println( f1.exists() );			//是否存在
		System.out.println( f1.isFile() );			//是否为文件
		System.out.println( f1.isAbsolute() );		//是否绝对路径
		System.out.println( f1.lastModified() );	//最后一次修改的时间
列出文件夹的内容
public class Test03 {

	public static void main(String[] args) {
		listSub3("D:\\course\\03-JavaSE\\code");
	}

	//显示指定文件 夹的内容
	public static void listSub1(String  dirname) {
		File dir = new File(dirname);
		
		String[] subs = dir.list();
		for (String string : subs) {
			System.out.println( string );
		}
	}
	
	//显示绝对路径 
	private static void listSub2(String dirname) {
		File dir = new File(dirname);
		
		File[] listFiles = dir.listFiles();
		for (File file : listFiles) {
			System.out.println(file.getAbsolutePath());
		}
	}
	
	//显示绝对路径 , 包括子文件夹的内容
	private static void listSub3(String dirname) {
		File dir = new File(dirname);
		
		File[] listFiles = dir.listFiles();
		for (File file : listFiles) {
			System.out.println(file.getAbsolutePath());
			//如果file对象是文件夹, 显示该子文件夹的内容
			if (file.isDirectory()) {
				listSub3( file.getAbsolutePath() ) ;			//递归调用
			}
		}
	}	
}

练习File

使用File类遍历 例如E:盘下的所有目录和文件

import java.io.File;

public class One {
    public static void main(String[] args) {
        File file = new File("E:\\IdeaProjects");
        showDirectory(file);
        }

    private static void showDirectory(File file) {
        //listFiles()    返回一个抽象路径名**数组**,表示由该抽象路径名表示的目录中的文件。
        File[] files = file.listFiles();
        for(File a:files){
            //getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 
            System.out.println(a.getAbsolutePath());
            //isDirectory()`  测试此抽象路径名表示的文件是否为目录
            if(a.isDirectory()){
                showDirectory(a);
            }
        }
    }
}

统计某个目录下(单级)所有以.java结尾的文件数量(不使用过滤器实现)

public class Two {
    public static void main(String[] args) {
        File ff = new File("E:\\IdeaProjects\\DateStruct\\src\\com\\nie\\LEE");
        File[] fs = ff.listFiles();
        int count=javaNum(fs);
        System.out.println(count);
//        System.out.println();
    }

    private static int javaNum(File[] fs) {
        int a=0;
        for (int i = 0; i <fs.length ; i++) {

            String str= String.valueOf(fs[i]);
            int index=str.lastIndexOf(".");
            String strJava=str.substring(index+1,str.length());
            if (strJava.equals("java")) a++;

        }
        return a;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值