本帖最后由 小石姐姐 于 2018-4-25 16:50 编辑
File类的常用方法介绍及使用_利用递归思想操作文件
File 的概述
package com.jobday09;
import java.io.File;
import java.io.IOException;
/*
* File:文件和目录路径名的抽象表示形式,File类的实例是不可变的
*
术语:
目录---指的是文件夹
* 构造方法 :
* File(File parent,String child)
* File(String pathname)
* File(String parent,String child)
*
* 只是创建了一个File对象,这个File对象指向了一个路径而已,并没有创建任何文件,
* 如果创建的路径下没有该文件,也不会报错.
* 如果想要创建文件需要调用File的方法进行创建
*
* File 的常用功能:
* 创建功能
* boolean creatcNewFile()
* boolean mkdir()
* boolean mkdirs()
* 删除功能
*
* 获取功能
* 判断功能
*
* 绝对路径:固定不可变的路径,以盘符开头
* 相对路径:相对某个参照物,不能以盘符开头
以斜杠开头: \\a\\b.txt 相当于当前所在盘符根目录
以点"."开头: 项目根目录
* 在eclipse中相对路径对应当前项目的根目录
*
* 注意:删除一个文件夹,这个文件夹下面不能有子文件夹和子文件
*
*
*/
public class File类概述 {
public static void main(String[] args) throws IOException {
// File类 构造函数的演示
method_1();
// File类方法的使用演示
File f = new File("d:\\a\\b.txt");// 绝对路径
File f2 = new File("b.txt");// 相对路径
// boolean createNewFile()
// 当指定文件不存在时创建文件并返回true,否则返回false
// System.out.println(f2.createNewFile());
// boolean mkdir()
// 创建一个文件夹
File f3 = new File("b");
// System.out.println(f3.mkdir());
// boolean mkdirs()
// 创建多级文件夹,创建成功返回true,否则返回false
File f4 = new File("a\\c\\e\\cab");
//System.out.println(f4.mkdirs());
//注意:"c.txt"只是File对象的一个参数,
//它具体创建"文件"还是"文件夹",要根据具体的方法来确定
File fs = new File("c.txt");
//System.out.println(fs.mkdir());
//boolean delete()
//删除指定的文件,它只能删除单个文件,不能删除多级文件
//删除成功返回true,否则返回false
//System.out.println(f2.delete());
File f6 = new File("a");
System.out.println(f6.delete());
//打印:false,不能删除带有子文件和子文件的文件
System.out.println(f4.delete());
//打印:true .删除了"a\\c\\e\\cab"路径下的cab文件夹
}
private static void method_1() {
// File类 构造函数的演示
// 1 File(String pathname)
// 将指定的路径名转换成一个File对象
File f = new File("D:\\模拟\\aaa.txt");
// 2 File(String parent,String child)
// 根据指定的父路径和文件名路径创建File对象
File f2 = new File("D:\\", "a\\b.txt");
// 3 File(File parent,String child )
// 根据指定的父路径和文件路径创建File对象
File parent = new File("D:\\a");
File f3 = new File(parent, "b.txt");
File f4 = new File(new File("D:\\a"), "b.txt");
}
}
--------------------------------------------
>>>>>>>>
package com.jobday09;
import java.io.File;
import java.io.IOException;
import java.util.Date;
/*
* File:文件和目录路径名的抽象表示形式,File类的实例是不可变的
*
* 构造方法 :
* File(File parent,String child)
* File(String pathname)
* File(String parent,String child)
*
* 只是创建了一个File对象,这个File对象指向了一个路径而已,并没有创建任何文件,
* 如果创建的路径下没有该文件,也不会报错.
* 如果想要创建文件需要调用File的方法进行创建
*
* File 的常用功能:
* 创建功能
* boolean creatcNewFile()
* boolean mkdir()
* boolean mkdirs()
* 删除功能:
* boolean delete()
* 获取功能:
*
* File getAbsoluteFile() //以File对象形式返回
* String getAbsolutPath() //以String形式返回
* //以上两个方法的功能是获取File对象指向的绝对路径
* String getParent()
* File getParentFile()
* //以上两个方法功能:获取File对象指向文件或文件夹的父路径
* //也就是目标文件或文件夹之前的路径
* String getName()//获取File对象所指向的文件或文件夹的名字
* String getPath()//获取创建File对象时的路径
* //以上两个方法返回值不同
* long lastModifide()//获取File对象所指向的文件或文件夹的最后修改时间
* long length()//获取文件的字节(也就是大小),文件夹的字节数为0
*
* 修改功能:
* boolean renameTo(File dest)
* //1.当两个File对象都指向相同文件或文件夹时,它可以更改文件或文件夹的名字
* //2.可以将File对象所指向的文件或文件夹,移动到另外一个File对象所指向的重名的目标文件名所在路径
* //3.该方法不更改,两个File对象的值
* 判断功能:
* boolean exists()
* //判断文件夹或文件是否存在
* boolean isAbsolute()
* //判断File对象指向的是否是就对路径,如果是则返回true
* /否则返回false
* boolean isDirectory()
* //判断File对象指向的路径是否是文件夹
* boolean isFile()
* //判断File对象指向的路径是否是文件
* boolean isHidden()
* //判断File对象指向的文件是否是有隐藏属性,如果隐藏了则返回true,
* //否则返回false
*
* 绝对路径:固定不可变的路径,以盘符开头
* 相对路径:相对某个参照物,不能以盘符开头
* 在eclipse中相对路径对应当前项目的根目录
*
* 注意:删除一个文件夹,这个文件夹下面不能有子文件夹和子文件
*
*
*/
public class File类概述 {
public static void main(String[] args) throws IOException {
// File类 构造函数的演示
//method_1();
// File类方法的使用演示
//method_2();
//获取绝对路径();
//获取父路径();
//获取文件或文件夹名字();
//获取文件的最后修改时间();
//获取文件的字节长度();
//修改文件名
File f1 = new File("E:\\aaa\\bbb\\ccc");
File f2 = new File("E:\\aaa\\ccc");
//boolean rename():
//1.当两个File对象都指向相同文件或文件夹时,它可以更改文件或文件夹的名字
//2.可以将File对象所指向的文件或文件夹,移动到另外一个File对象所指向的重名的目标文件名所在路径
//3.该方法不更改两个File对象的值
System.out.println(f1.renameTo(f2));
System.out.println(f1);
}
private static void 获取文件的字节长度() {
//获取文件的字节长度
File f = new File("D:\\优酷视频下载\\北京遇上西雅图_超清.kux");
//long length():获取文件的字节(也就是大小)
System.out.println(f.length());
}
private static void 获取文件的最后修改时间() {
//获取文件的最后修改时间
File f1 = new File("a\\b\\d");
System.out.println(f1.mkdirs());
File f = new File("b");
//long lastModifide()
System.out.println(f1.lastModified());
//打印结果:1523103266270 这是一个文件最后修改时间毫秒值
Date date = new Date(f1.lastModified());
System.out.println(date.toLocaleString());
}
private static void 获取文件或文件夹名字() throws IOException {
//获取文件或文件夹名字
File f1 = new File("b");
System.out.println(f1.createNewFile());
File f2 = new File("b.txt");
System.out.println(f2.createNewFile());
File f3 = new File("d:\\fl\\c.txt");
System.out.println(f3.createNewFile());
//String getName() 获取File对象所指向的文件或文件夹的名字
System.out.println(f1.getName()+" "+f2.getName()+" "+f3.getName());
//打印结果:b b.txt c.txt
//String getPath() :获取创建File对象时的路径
System.out.println(f1.getPath()+" "+f2.getPath()+" "+f3.getPath());
//打印结果:b b.txt d:\fl\c.txt
}
private static void 获取父路径() throws IOException {
//获取父路径
File parent = new File("d:\\fl");
File f = new File(parent,"c.txt");
if(!parent.exists()){
parent.mkdirs();
}
// File f = new File("d:\\fl\\c.txt");
System.out.println(f.createNewFile());
//String getParent()
System.out.println(f.getParent());
//File getParentFile()
System.out.println(f.getParentFile());
}
private static void 获取绝对路径() throws IOException {
//获取绝对路径
File f = new File("d:\\a\\c\\d");
System.out.println(f.mkdirs());
File f1 = new File("d:\\a\\c\\d\\c.txt");
f1.createNewFile();
File f2 = new File("b.txt");
f2.createNewFile();
//File getAbsoluteFile();
//以File对象的形式返回当前File对象所指向的就对路径
System.out.println(f2.getAbsoluteFile());
//打印结果: d:\a\c\d\c.txt
//String getAbsolutPath()
//将存有相对路径的File对象f2的绝对路径以字符串的形式返回
System.out.println(f2.getAbsolutePath());
//打印结果: E:\eclipse\workspace\视频笔记\b.txt
}
private static void method_2() {
// File类方法的使用演示
File f = new File("d:\\a\\b.txt");// 绝对路径
File f2 = new File("b.txt");// 相对路径
// boolean createNewFile()
// 当指定文件不存在时创建文件并返回true,否则返回false
// System.out.println(f2.createNewFile());
// boolean mkdir()
// 创建一个文件夹
File f3 = new File("b");
// System.out.println(f3.mkdir());
// boolean mkdirs()
// 创建多级文件夹,创建成功返回true,否则返回false
File f4 = new File("a\\c\\e\\cab");
//System.out.println(f4.mkdirs());
//注意:"c.txt"只是File对象的一个参数,
//它具体创建"文件"还是"文件夹",要根据具体的方法来确定
File fs = new File("c.txt");
//System.out.println(fs.mkdir());
//boolean delete()
//删除指定的文件,它只能删除单个文件,不能删除多级文件
//删除成功返回true,否则返回false
//System.out.println(f2.delete());
File f6 = new File("a");
System.out.println(f6.delete());
//打印:false,不能删除带有子文件和子文件的文件
System.out.println(f4.delete());
//打印:true .删除了"a\\c\\e\\cab"路径下的cab文件夹
}
private static void method_1() {
// File类 构造函数的演示
// 1 File(String pathname)
// 将指定的路径名转换成一个File对象
File f = new File("D:\\模拟\\aaa.txt");
// 2 File(String parent,String child)
// 根据指定的父路径和文件名路径创建File对象
File f2 = new File("D:\\", "a\\b.txt");
// 3 File(File parent,String child )
// 根据指定的父路径和文件路径创建File对象
File parent = new File("D:\\a");
File f3 = new File(parent, "b.txt");
File f4 = new File(new File("D:\\a"), "b.txt");
}
}
------------------------------------------------
>>>>>>>> File类的重要获取方法 <<<<<<<<<<<<
package com.jobday09;
import java.io.File;
/*File类的重要获取方法:
*
* String[] list()
* //1.获取File对象所指路径下目标文件夹内一级的所有文件名和文件夹名
* //2.只有指向文件夹的File对象才可以调用该方法
* //3.返回的是String类型
* File[] listFiles()
* //1.返回File对象所指的目标文件夹内所有文件的绝对路径
* //返回类型为File类的对象
* static File[] listRoots()
* //1.该方法是一个静态方法,直接使用File类名调用就行
* //2.返回值是该电脑上所有盘的根目录,也就是盘符
*/
public class File类的重要获取方法 {
public static void main(String[] args) {
//method_1();
//method_2();
//static File[] listRoots()
File[] files = File.listRoots();
for(int i=0;i<files.length;i++){
System.out.println(files);
}
}
private static void method_2() {
File f = new File("E:\\myeclipse安装包");
File[] files = f.listFiles();
for(int i=0;i<files.length;i++){
System.out.println(files.getName());
}
//打印结果:
// E:\myeclipse安装包\myeclipse.10.zip
// E:\myeclipse安装包\myeclipse官方破解版
// E:\myeclipse安装包\myeclipse注册机
}
private static void method_1() {
File f = new File("E:\\aaa\\ccc\\接口的优点.jpg");
File f1 = new File("E:\\aaa");
//String[] list()
String[] files = f1.list();
for(int i=0;i<files.length;i++){
System.out.println(files);
}
}
}
------------------------------------------
>>>>> 利用递归的思想 获取指定目录下的所有的指定文件(包含子目录) <<<<<
思考:将获取到的符合调件的文件名存到一个集合或数组中
package com.jobday09;
import java.io.File;
/*
*获取指定目录下所有的Java文件(包含子目录)
*步骤:
* 1.定义可以获取指定目录中的Java文件的方法
* 2.定义可以获取指定目录下,所有文件夹的路径
*
*/
public class 获取指定目录下所有的文件 {
public static void main(String[] args) {
File file = new File("src");
//第一种方法
dirGain(file);
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>");
//第二种方法
method(file);
}
//第一种方法,分两步实现
public static void dirGain(File file){
if(file.isDirectory()){
//获取指定目录中的java文件
fileGain(file);
//获取指定目录下所有的文件夹的绝对路径
File[] files = file.listFiles();
for(File f : files){
if(f.isDirectory()){
dirGain(f);
}
}
}
}
//获取指定目中的java文件的方法
public static void fileGain(File file){
File[] files = file.listFiles();
for(File f : files){
if(f.getName().endsWith(".java")){
System.out.println(f.getName());
}
}
}
//第二种方法,简单
public static void method(File file){
if(file.isDirectory()){
File[] files = file.listFiles();
for(File f : files){
if(f.isFile()){
System.out.println(f.getName());
}else{
method(f);
}
}
}
}
}
-----------------------------------------------
>>>>>>>> 删除指定的文件夹 <<<<<<<<
package com.jobday09;
import java.io.File;
/*
* 1.删除指定的文件夹
* 2.如果想删除指定的文件,在delete()方法中删除文件的位置,添加一个判断行
*/
public class 删除指定路径下的所有文件 {
public static void main(String[] args) {
File file = new File("E:\\文件夹移动测试2");
delete(file);
}
//1.删除指定路径下的所有文件
public static void delete(File file){
//首先判断传进的参数是不是一个路径(文件夹)
if(file.isDirectory()){
//删除路径下的文件
File[] files = file.listFiles();
for(File f : files){
//判断f是不是文件
if(f.isFile()){
//删除前现将文件名打印
System.out.println(f.getName());
f.delete();
}else{
//否则就是一个文件夹,继续调用方法自身
delete(f);
}
}
//删除文件夹自己
System.out.println(file.getName());
file.delete();
}
}
}
|
|