IO File

 

package a;
//注:目录 directory就是文件夹
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
class MyFilter implements FileFilter{

	@Override
	public boolean accept(File pathname) 
	{
		if(pathname.getName().endsWith(".java"))
			//if(pathname.toString().endsWith(".java"))也可以
			return true;
		else
			return false;
	}
	
}
class MyJavaAndDirFilter implements FileFilter{
	@Override
	public boolean accept(File pathname) {
		if(pathname.getName().endsWith(".java"))
		  return true;
		else if(pathname.isDirectory())
			return true;
		else //非.java文件
			return false;
	}
	
}
public class Test {
	//File类的3种构造方法
	public static void f1()//File的构造方法1
	{
		//单纯的把路径变成File对象,路径存不存在不管
		File file=new File("d:\\a");//路径名可以写到文件或文件夹
		//  \a的话前面的\会把a转义了(报错),\\前面的\会把后面的\转义了就是一个\
		// 在java中写两条\\因为java会转义,但在windows中写一条\
		//windows的文件夹名,文件名,路径名,都不区分大小写但Linux区分
		//绝对路径:在系统中具有唯一性
		//相对路径:路径之间的相对关系
		System.out.println(file);
		//输出:d:\a
	}
	public static void f2()//File的构造方法2
	{
		//File file=new File(String 父路径,String 子路径)
		//这种方法可以单纯的操作父路径和子路径
		File file1=new File("d:","a"); 
		File file2=new File("d:\\a","b"); //起到一个为子字符串添加\\并拼接的作用
		System.out.println(file1);//输出:d:\a
		System.out.println(file2);//输出:d:\a\b
	}
	public static void f3()//File的构造方法2
	{
		//File file=new File(File 父路径,String 子路径)
		File file=new File("d:\\a");
		File file1=new File(file,"b");
		System.out.println(file1);//d:\a\b
	}
	
	
	//File类的创建文件,创建文件夹,删除文件和文件夹
	public static void f4() throws IOException//用File对象创建构造方法中路径所指定的文件
	 //这个方法会抛出异常
	{//还需要在mian()上抛出
		File file=new File("D:\\a\\hehe.txt");
		boolean b=file.createNewFile();//注:发方法只能创建文件不能创建文件夹,如果文件已经存在了
		System.out.println(b);//就不再创建,返回false。创建的文件路径和文件名,在构造方法中给出
		//系统中的文件和文件夹不能用有没有后缀来区分。
	}
	public static void f5()//用File对象创建构造方法中路径所指定的文件夹
	{
		File file=new File("D:\\a","bb\\aa\\cc");//可以创建嵌套的一级或者多级文件夹
		boolean b=file.mkdirs();
		System.out.println(b);
		//创建的路径在File构造方法中给出,如果文件夹已经存在了,不再创建,返回false
	}
	public static void f6()//删除文件或文件夹,路径已经在构造方法中给出
	{
		File file =new File("D:\\a","bb\\aa\\cc");//cc被删除了
		boolean b=file.delete();
		System.out.println(b);
		//返回true:删除成功
		//返回true:删除失败,该文件或文件夹 不存在或文件处于打开状态
		//该删除不走回收站,直接从硬盘中删除
	}
	
	
	//File类的获取功能:
	public static void f7()//获取路径中最后部分的名字,,路径在构造方法中给出
	{
		File file1=new File("D:\\java\\day14\\bin\\afternoon");
		System.out.println(file1.getName());  //afternoon
		File file2=new File("D:\\java\\day14\\bin\\afternoon\\Homework.class");
		System.out.println(file2.getName());  //Homework.class
	}
	public static void f8()//获取父路径(getName()的前部分路径),,路径在构造方法中给出
	{
		File file1=new File("D:\\java\\day14\\bin\\afternoon");
		System.out.println(file1.getParentFile());
		File file2=new File("D:\\java\\day14\\bin\\afternoon\\Homework.class");
		System.out.println(file2.getParentFile());
	}
	
	public static void f9()//获取绝对路径,路径在构造方法中给出
	{
		File file1=new File("D:\\java\\day14\\bin\\afternoon");
		File file2=new File("D:\\java\\day14\\bin\\afternoon\\Homework.class");
		System.out.println(file1.getAbsoluteFile());//返回值为File类对象
		//输出:D:\java\day14\bin\afternoon
		System.out.println(file2.getAbsoluteFile());//返回值为File类对象
		//输出:D:\java\day14\bin\afternoon\Homework.class
	}
	public static void f10()//获取文件对应的字节数,路径在构造方法中给出
	{
		File file=new File("D:\\java\\day14\\bin\\afternoon\\Homework.class");
		System.out.println(file.length());//返回文件的【字节】数
	}
	public static void f11()//获取该目录中(只一层)的文件和目录名,路径在构造方法中已给出
	{
		File file=new File("E:\\workspace\\thinking in java\\src");
		File[] fileArr=file.listFiles();
		for(File f:fileArr)
			System.out.println(f);

	}

	public static void f12()//获取该目录中(只一层)的.java文件,路径在构造方法中已给出
	{
		File file=new File("E:\\workspace\\thinking in java\\src");
		File[] fileArr=file.listFiles(new MyFilter());
		for(File f:fileArr)
		{
			System.out.println(f);
		}
//Filter:过滤
//listFiles()的重载方法:listFiles(FileFilter fileter)  FileFilter是接口,要自己定义接口的实现类,在里面实现该接口
//重写public boolean accept(File pathname)方法
//File[] fileArr=file.listFiles(new MyFilter());的过程:listFiles方法产生一个绝对路径就会调用一次FileFilter实现类
//中的accept()方法,把它的路径作为accept的参数(File pathname)在accept方法体中对该路径进行处理,当accept方法返回true
//这个listFiles方法收到true就把路径装进fileArr数组中,当返回false不放进数组中。
//注:接口中的方法public的
	}
	
	
	
	//获取该目录中的[所有]文件和文件夹(目录),路径在构造方法中已给出
	public static void f13()
	{
		File file =new File("E:\\workspace\\thinking in java\\src");
		printAllFile(file);
	}
	public static void printAllFile(File file)
	{
		System.out.println(file);
		File[] fileArr=file.listFiles();
		for(File f:fileArr)
		{
			if(f.isDirectory())//是个目录的话
			    printAllFile(f);
			else //是文件的话
				System.out.println(f);
		}
		
	}
	
	
	//获取该目录中的[所有]的.java文件,路径在构造方法中已给出
	public static void f14()
	{
		File file=new File("E:\\workspace\\Thinkinginjava\\src");
		printAllJavaFile(file);
	}
	public static void printAllJavaFile(File file)
	{
		File[] fileArr=file.listFiles(new MyJavaAndDirFilter());
		for(File f:fileArr)
		{
			if(f.isDirectory())
				printAllJavaFile(f);
			else
				System.out.println(f);
		}
	}
	
	
	
	//判断
	public static void f15()//判断File构造方法中封装的路径是真实否存在的
	{
		File file1=new File("E:\\workspace\\Thinkinginjava\\src");
		boolean b1=file1.exists();//存在返回false
		System.out.println(b1);
		
		File file2=new File("E:\\wdsfhsdjfhjdfh");
		boolean b2=file2.exists();//不存在返回false
		System.out.println(b2);
	}
	public static void f16()//判断File构造方法中封装的路径是不是一个目录(File中只有目录和文件两种类型)
	//不是目录就是文件,它还可以判断这个路径是否是真实存在的
	{
		File file=new File("E:\\workspace\\Thinkinginjava\\src");
		boolean b=file.isDirectory();
		System.out.println(b);
	}
	public static void main(String[] args) {
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值