(40)Java学习笔记——IO流技术 / File类

类 File

文件和目录路径名的抽象表示形式。 

构造方法:
public File(String pathname)    //根据一个路径得到File对象
public File(String parent, String child)     //根据一个目录和一个子文件(子目录)得到File对象
public File(File parent , String child)   //根据一个父File对象 和 一个子文件(子目录)得到File对象
范例:
package cn.itcast_01;

import java.io.File;

/*
 * File 类
 * 构造方法:
public File(String pathname)    //根据一个路径得到File对象
public File(String parent, String child)     //根据一个目录和一个子文件(子目录)得到File对象
public File(File parent , String child)   //根据一个父File对象 和 一个子文件(子目录)得到File对象
 */
public class FileDemo {
	public static void main(String[] args) {
		//public File(String pathname)    //根据一个路径得到File对象
		File file = new File("D:\\demo\\a.txt");	//只是一个抽象的指向对象(不负责创建等其他功能)
		
		//public File(String parent, String child)     //根据一个目录和一个子文件(子目录)得到File对象
		File file2 = new File("D:\\demo","a.txt");
		
		//public File(File parent , String child)   //根据一个父File对象 和 一个子文件(子目录)得到File对象
		File file3 = new File("E:\\demo");
		File file4 = new File(file3,"a.txt");
		
		//以上三种方式效果一样
		
	}
}

成员方法:

创建功能
public boolean createNewFile()   //创建一个新文件, 如果存在就不创建了
public boolean mkdir()    // 创建一个文件夹,如果存在就不创建了
public boolean mkdirs()   // 创建一个文件夹,并创建不存在的父文件夹
注意:如果创建文件或文件夹没有写盘符路径,就会默认在项目路径下。
删除功能:
public boolean delete()   //
注意:要删除一个文件夹,该文件夹内不能包含文件或者文件夹
重命名功能
public boolean renameTo(File dest)
注意:如果路径名相同,就是改名
如果路径名不同,就是改名并剪切。
范例:
package cn.itcast_02;

import java.io.File;
import java.io.IOException;

/*
 * File
 * 创建功能:
public boolean createNewFile()   //创建一个新文件
public boolean mkdir()    // 创建一个文件夹
public boolean mkdirs()   // 创建一个文件夹,并创建不存在的父文件夹
删除功能:
public boolean delete()
重命名功能
public boolean renameTo(File dest)
 */
public class FileDemo {
	public static void main(String[] args) throws IOException {	//这里会需要抛出异常
		//需求:在G盘JavaWorkPlace目录下创建一个文件夹demo
		//public boolean mkdir()    // 创建一个文件夹
		File file = new File ("G:\\JavaWorkPlace\\demo");
		System.out.println("mkdir:"+file.mkdir());
		
		//需求:在G盘JavaWorkPlace目录下创建一个a.txt文件
		//public boolean createNewFile()   //创建一个新文件
		File file2 = new File("G:\\JavaWorkPlace\\demo\\a.txt");
		System.out.println(file2.createNewFile());	//这里会需要抛出异常
		
		//需求:在G盘JavaWorkPlace目录下test目录下创建一个文件b.txt
		File file3 = new File("G:\\JavaWorkPlace\\test");
		System.out.println(file3.mkdir());
		File file4 = new File("G:\\JavaWorkPlace\\test\\b.txt");
		System.out.println(file4.createNewFile());
		
		//需求:在G盘JavaWorkPlace目录下test2目录下创建aaa目录
		File file5 = new File("g:\\JavaWorkPlace\\test2\\aaa");
		System.out.println(file5.mkdirs());
		
		//需求:删除G盘JavaWorkPlace目录下test目录下创建一个文件b.txt
		File file6 = new File("G:\\JavaWorkPlace\\test\\b.txt");
		System.out.println(file6.delete());
		
		//需求:重命名G盘JavaWorkPlace目录下test2目录下aaa目录成bbb
		File newFile = new File("g:\\JavaWorkPlace\\test2\\bbb");	//注意,要先指向位置
		System.out.println(file5.renameTo(newFile));
	}
}

判断功能:
public boolean isDirectory()  //判断是否是文件夹
public boolean isFile()   //判断是否是文件
public boolean exists()   //判断是否存在
public boolean canRead()   //判断是否可读
public boolean canWrite()  //判断是否可写
public boolean isHidden()   //判断是否隐藏
范例:
package cn.itcast_03;

import java.io.File;

/*
 * 判断功能:
public boolean isDirectory()  //判断是否是文件夹
public boolean isFile()   //判断是否是文件
public boolean exists()   //判断是否存在
public boolean canRead()   //判断是否可读
public boolean canWrite()  //判断是否可写
public boolean isHidden()   //判断是否隐藏
 */
public class FileBooleanDemo {
	public static void main(String[] args) {
		//创建文件对象
		File file = new File("a.txt");
		
		//public boolean isDirectory()  //判断是否是文件夹
		System.out.println(file.isDirectory());	//false
		System.out.println(file.isFile());	//true
	}
}
获取功能:
基本获取功能:
public String getAbsoluePath()  //获取绝对路径
public String getPath()   //获取相对路径
public String getName()   //获取名称
public long length()   //获取长度。字节数
public long lastModified()   //获取最后一次的修改时间,返回毫秒值
范例:
package cn.itcast_04;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * 获取功能:
基本获取功能:
public String getAbsoluePath()  //获取绝对路径
public String getPath()   //获取相对路径
public String getName()   //获取名称
public long length()   //获取长度。字节数
public long lastModified()   //获取最后一次的修改时间,返回毫秒值
 */
public class FileGetDemo {
	public static void main(String[] args) {
		//创建文件对象
		File file = new File("demo\\test.txt");
		
		//public String getAbsoluePath()  //获取绝对路径
		System.out.println(file.getAbsolutePath()); //G:\JavaWorkPlace\page40_File\demo\test.txt
		
		//public String getPath()   //获取相对路径
		System.out.println(file.getPath()); 	//demo\test.txt
		
		//public String getName()   //获取名称
		System.out.println(file.getName());		//test.txt
		
		//public long length()   //获取长度。字节数
		System.out.println(file.length());		//5
		
		//public long lastModified()   //获取最后一次的修改时间,返回毫秒值
		System.out.println(file.lastModified());		//1487229623508
		//解析时间
		Date d = new Date(1487229623508L);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String s = sdf.format(d);
		System.out.println(s); 	//2017-02-16 15:20:23
	}
}

高级获取功能:
public String[ ] list()  //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
范例:
package cn.itcast_04;

import java.io.File;

/*
 * public String[ ] list()  //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
 */
public class FileGetDemo02 {
	public static void main(String[] args) {
		//指定一个目录
		File file = new File("g:\\");
		
		// * public String[ ] list()  //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
		String[] array = file.list();
		for(String s : array){
			System.out.println(s);
		}
/*		返回结果:
		$RECYCLE.BIN
		JavaWorkPlace
		SteamLibrary
		System Volume Information
		Virtual Machines
		VXdata
		筑翎工作*/
		
		//public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
		File[] fileArray = file.listFiles();
		for(File s : fileArray){
			System.out.println(s);
		}
/*		返回结果:
		g:\$RECYCLE.BIN
		g:\JavaWorkPlace
		g:\SteamLibrary
		g:\System Volume Information
		g:\Virtual Machines
		g:\VXdata
		g:\筑翎工作*/
		
	}
}

练习:
判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
方式思路一:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出
package cn.itcast_05;

import java.io.File;

/*
 * 练习:判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
 * 思路:
 * A / 封装G判断目录
 * B / 获取该目录下所有文件或者文件家的File数组
 * C / 遍历该数组,得到每一个File对象,
 * D / 是否是文件
 * 			是:继续判断是否以.jpg结尾
 * 				是:输出该文件
 * 				否:不搭理
 * 			否:不搭理
 */
public class FileTest_01 {
	public static void main(String[] args) {
		//创建文件对象
		File file = new File("g:\\");
		
		//获取该目录下所有文件或者文件家的File数组
		File[]  fileArray = file.listFiles();
		
		//遍历该数组,得到每一个File对象,
		for (File f : fileArray){
			//判断是不是文件
			if(f.isFile()){
				//判断是不是.jpg结尾
				if (f.getName().endsWith(".jpg")){
					//输出该文件名称
					System.out.println(f.getName());
				}

			}

		}
	
		
	}
}
方式思路二:获取的收就已经满足条件了,然后输出
使用文件过滤器

接口 FilenameFilter

public String [] list ( FilenameFilter  filter)
public File [] listFiles ( FilenameFilter  filter)
范例:
package cn.itcast_05;

import java.io.File;
import java.io.FilenameFilter;

/*
 * 练习:判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
 * 用接口FilenameFilter
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
 * 思路:
 * A / 封装G判断目录
 * B / 获取该目录下所有文件或者文件家的File数组
 * C / 遍历该数组,得到每一个File对象,
 * D / 是否是文件
 * 			是:继续判断是否以.jpg结尾
 * 				是:输出该文件
 * 				否:不搭理
 * 			否:不搭理
 */
public class FileTest_3 {
	public static void main(String[] args) {
		//创建文件对象
		File file = new File("g:\\");
		
		//获取该目录下所有文件或者文件夹的String数组
		String[] strArray = file.list(new FilenameFilter(){

			@Override
			public boolean accept(File dir, String name) {   //accept是实现类
				//在这个位置进行条件判断
				File file = new File(dir,name);
				boolean flag = file.isFile();
				boolean flag2 = name.endsWith(".jpg");
				return flag && flag2;
			}
	
		});
		
		//遍历
		for(String s: strArray){
			System.out.println(s);
		}
	}
}
练习02:
package cn.itcast_06;

import java.io.File;

/*
 * 批量修改文件名称
 * F:\IDM\MySQL
 * 需求:把这个下面的视频名称修改为00?_介绍.wmv
 * 思路:
 * A / 封装目录
 * B / 遍历该File数组,得到每一个File对象
 * C / 拼接一个新名称,然后重命名
 */
public class FileTest_01 {
	public static void main(String[] args) {
		//封装目录
		File srcFolder = new File("F:\\IDM\\MySQL");
		
		//获取该目录下文件的File数组
		File[] fileArray = srcFolder.listFiles();
		
		//遍历该File数组,得到每一个File对象
		for (File file : fileArray){
			//F:\IDM\MySQL\三通it学院-www.santongit.com-050-动力节点-MYSQL视频-练习题.wmv
			//改后:F:\IDM\MySQL\050-动力节点-MYSQL视频-练习题.wmv
			String name = file.getName();
			int startIndex = name.indexOf("0");
			String newName = name.substring(startIndex);
			System.out.println(newName);
			
			File newFile = new File(srcFolder,newName);
			
			//重名即可
			file.renameTo(newFile);
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值