Java——File类,递归

一、File类

获取路径或目录分隔符

public static void main(String[] args) {
	//File类静态成员变量
	//与系统有关的路径分隔符
	String separator = File.pathSeparator;
	System.out.println(separator);// 是一个分号,目录的分割   Linux :

	//与系统有关的默认名称分隔符
	separator = File.separator;
	System.out.println(separator);// 向右 \  目录名称分割  Linux /
}

1、3种构造方式

/*
 *  File(File parent,String child)
 *  传递路径,传递File类型父路径,字符串子路径
 *  好处: 父路径是File类型,父路径可以直接调用File类方法
 */
public static void function_2(){
	File parent = new File("d:");
	File file = new File(parent,"eclipse");
	System.out.println(file);
}

/*
 *  File(String parent,String child)
 *  传递路径,传递字符串父路径,字符串子路径
 *  好处: 单独操作父路径和子路径
 */
public static void function_1(){
	File file = new File("d:","eclipse");
	System.out.println(file);
}

/*
 *  File(String pathname)
 *  传递路径名: 可以写到文件夹,可以写到一个文件
 *  c:\\abc   c:\\abc\\Demo.java
 *  将路径封装File类型对象
 */
public static void function(){
	File file = new File("d:\\eclipse");
	System.out.println(file);
}

2、创建文件

/*
 *  File创建文件的功能
 *  boolean createNewFile()
 *  创建的文件路径和文件名,在File构造方法中给出
 *  文件已经存在了,不再创建,返回值为false
 */
public static void function()throws IOException{
	File file = new File("c:\\a.txt");
	boolean b = file.createNewFile();
	System.out.println(b);
}

3、创建文件夹

/*
 *  File创建文件夹功能
 *  boolean mkdirs() 创建多层文件夹
 *  创建的路径也在File构造方法中给出
 *  文件夹已经存在了,不再创建,返回值为false
 */
public static void function_1(){
	File file = new File("c:\\abc");
	boolean b = file.mkdirs();
	System.out.println(b);
}

4、删除文件和文件夹

/*
 *  File类的删除功能
 *  boolean delete()
 *  删除的文件或者是文件夹,在File构造方法中给出
 *  删除成功返回true,删除失败返回false
 *  删除方法,不走回收站,直接从硬盘中删除
 *  删除有风险,运行需谨慎
 */
public static void function_2(){
	File file = new File("c:\\a.txt");
	boolean b = file.delete();
	System.out.println(b);
}

5、获取文件或文件夹的名字

/*
 *  File类的获取功能
 *  String getName()
 *  返回路径中表示的文件或者文件夹名
 *  获取路径中的最后部分的名字
 */
public static void function(){
	File file = new File("d:\\eclipse\\eclipse.exe");
	String name = file.getName();
	System.out.println(name);
}

6、获取文件中的字节数

/*
 * File类获取功能
 * long length()
 * 返回路径中表示的文件的字节数
 */
public static void function_1(){
	File file = new File("d:\\eclipse\\eclipse.exe");
	long length = file.length();
	System.out.println(length);
}

7、获取绝对路径

/*
 * File类获取功能
 * String getAbsolutePath() 返回String对象
 * File   getAbsoluteFile() 返回File对象
 */
public static void function_2(){
	File file = new File("src");
	File absolute = file.getAbsoluteFile();
	System.out.println(absolute);
}

8、获取父路径

/*
 * File类的获取功能
 * String getParent() 返回String对象
 * File getParentFile()返回File对象
 * 获取父路径
 */
public static void function_3(){
	File file = new File("d:\\eclipse\\eclipse.exe");
	File parent = file.getParentFile();
	System.out.println(parent);
}

9、判断路径是否存在

/*
 *  File判断功能
 *  boolean exists()
 *  判断File构造方法中封装路径是否存在
 *  存在返回true,不存在返回false
 */
public static void function(){
	File file = new File("src");
	boolean b = file.exists();
	System.out.println(b);
}

10、判断是否为文件/文件夹

/*
 *  File判断功能
 *  boolean isDirectory()
 *  判断File构造方法中封装的路径是不是文件夹
 *  如果是文件夹,返回true,不是文件返回false
 *
 *  boolean isFile()
 *  判断File构造方法中封装的路径是不是文件
 */
public static void function_1(){
	File file = new File("d:\\eclipse\\eclipse.exe");
	if(file.exists()){
		boolean b = file.isDirectory();
		System.out.println(b);
	}
}

11、遍历目录下所有文件

/*
 *  File类的获取功能
 *  File[] listFiles()
 *  获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
 *  返回的是目录或者文件的全路径
 */
public static void function_1(){
	File file = new File("d:\\eclipse");
	File[] fileArr = file.listFiles();
	for(File f : fileArr){
		System.out.println(f);
	}
}

/*
 *  File类的获取功能
 *  String[] list()
 *  获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
 *  返回只有名字
 */
public static void function(){
	File file = new File("c:");
	String[] strArr = file.list();
	System.out.println(strArr.length);
	for(String str : strArr){
		System.out.println(str);
	}
}

12、文件过滤器

需要我们自己写一个过滤器

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

/*
 *  自定义过滤器
 *  实现FileFilter接口,重写抽象方法
 */
public class MyFilter implements FileFilter{
	public boolean accept(File pathname)  {
		/*
		 * pathname 接受到的也是文件的全路径
		 * c:\\demo\\1.txt
		 * 对路径进行判断,如果是java文件,返回true,不是java文件,返回false
		 * 文件的后缀结尾是.java
		 */
		//String name = pathname.getName();
		return pathname.getName().endsWith(".java");

	}
}

然后在listfiles中添加它的匿名对象

import java.io.File;

/*
 *  File类的获取,文件获取过滤器
 *  遍历目录的时候,可以根据需要,只获取满足条件的文件
 *  遍历目录方法 listFiles()重载形式
 *  listFiles(FileFilter filter)接口类型
 *  传递FileFilter接口的实现类
 *  自定义FileFilter接口实现类,重写抽象方法,
 *  接口实现类对象传递到遍历方法listFiles
 */
public class FileDemo1 {
	public static void main(String[] args) {
		File file = new File("c:\\demo");
		File[] fileArr = file.listFiles(new MyFilter());
		for(File f : fileArr){
			System.out.println(f);
		}
	}
}

二、递归

示例:

/*
 *  方法的递归调用
 *    方法自己调用自己
 *  适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
 *  注意:
 *     递归一定要有出口, 必须可以让程序停下
 *     递归次数不能过多
 *     构造方法,禁止递归
 */
public class DiGuiDemo {
	public static void main(String[] args) {
		/*int sum = getSum(3);
		System.out.println(sum);*/
		System.out.println(getJieCheng(5));
		System.out.println(getFBNQ(12));
	}
	/*
	 *  方法递归,计算斐波那契数列
	 *
	 */
	public static int getFBNQ(int month){
		if( month == 1)
			return 1;
		if( month == 2)
			return 1;
		return getFBNQ(month-1)+getFBNQ(month-2);
	}

	/*
	 *  计算阶乘 5!
	 *   5*4*3*2*1
	 */
	public static int getJieCheng(int n){
		if ( n == 1)
			return 1;
		return n * getJieCheng(n-1);
	}

	/*
	 *  计算 1+2+3+100和 = 5050
	 *  计算规律:
	 *    n+(n-1)+(n-2)
	 *    100+(100-1)+(99-1)+...1
	 */
	public static int getSum(int n){
		if( n == 1)
			return 1;
		return n + getSum(n-1);
	}

}

如果我们想遍历目录下所有的文件,就可以用这种方法

/*
 *  定义方法,实现目录的全遍历
 */
public static void getAllDir(File dir){
	System.out.println(dir);
	//调用方法listFiles()对目录,dir进行遍历
	File[] fileArr = dir.listFiles();
	for(File f : fileArr){
		//判断变量f表示的路径是不是文件夹
		if(f.isDirectory()){
			//是一个目录,就要去遍历这个目录
			//本方法,getAllDir,就是给个目录去遍历
			//继续调用getAllDir,传递他目录
			getAllDir(f);
		}else{
			System.out.println(f);
		}
	}
}

原文地址:https://www.cnblogs.com/x54256/p/8436580.html

时间: 2024-11-12 21:56:08

Java——File类,递归的相关文章

[Java] File类 递归 获取目录下所有文件/文件夹

package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String args[]){ System.out.println("file Go..."); // 这里改成你要遍历的目录路径 recursiveFiles("F:\\fileText"); System.out.println("file End."); }

java File类-递归遍历目录结构和树状展现

f.listFiles(); //返回目录下的所有子目录和子文件版本一:未加计数器分层次 static void f(File f) { System.out.println(f.getName()); if(f.isDirectory()) { File[] files=f.listFiles(); //如果是目录,返回目录下的所有子目录和子文件 for(File fi:files) { f(fi); } } } 版本二:加计数器分层次 static void f(File f,int lev

黑马程序员-File类+递归的简单应用

Java File类   Java.io.File Java文件类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等. File对象代表磁盘中实际存在的文件和目录.通过以下构造方法创建一个File对象. 通过给定的父抽象路径名和子路径名字符串创建一个新的File实例. File(File parent, String child); 通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例. File(String pathname) 根据 pa

Java File类总结和FileUtils类

Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. File类的对象可以是目录或者文件. 如果是目录,public boolean isDirectory()返回true: 如果是文件(非目录则是文件),public boolean isFile()返回true: 但是注意需要先判断文件是否存在,如果文件不存在,上面两个方法都返回false,即不存在的F

day23<File类递归练习>

File类递归练习(统计该文件夹大小) File类递归练习(删除该文件夹) File类递归练习(拷贝) File类递归练习(按层级打印) 递归练习(斐波那契数列) 递归练习(1000的阶乘所有零和尾部零的个数) 递归练习(1000的阶乘尾部零的个数) 集合练习(约瑟夫环)   ###23.01_File类递归练习(统计该文件夹大小) 需求:1,从键盘接收一个文件夹路径,统计该文件夹大小 * 从键盘接收一个文件夹路径 1,创建键盘录入对象 2,定义一个无限循环  3,将键盘录入的结果存储并封装成F

java File类

今天我要总结一下java File类.这个是一个很重要的类. 首先是我画的思维导图. 还写了一些自己写的代码. /** * Date : 2017/6/24 * Author : Hsj * Description : */ public class Demo { /** * File(pathname)表示文件或文件夹路径 * File(String parent,child); * File(File parent,child); */ @Test public void fun() { /

JAVA File类 分析(三)

前面两篇与大家一起研究了unix下的文件系统,本篇将和大家一起分析 文件的属性和文件夹. ok,废话不说,先来段代码 #include <stdio.h> #include <sys/types.h> #include <dirent.h> void do_ls(char[]); void main(int ac,char *av[]){ if(ac==1) do_ls("."); else{ while(--ac){ printf("%s

java File类的基本操作

(如果有谁想要这个软件的话,在评论中留一个邮箱吧.) 前几天好几次看到有朋友晒出玩2048刷高分的截图,我就想我能不能也做一个2048呢?仔细想了想2048游戏的规律,发现其实逻辑上很简单,也不用研究什么算法,于是我马上觉得我可以很快写出来.当天下午我就用了四个小时完成了2048的基本功能.几天后觉得不满足,于是给我的2048加了存档.读档和后退一步的功能,这样就更好刷分了呢! 使用语言:C#: 平台:Visual Studio 2012 Win Form. 如何完成2048的基本功能呢?204

Java File类的学习

File类的概述 java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. File类部分构造方法 /** * 从父抽象路径名和子路径名字符串创建新的File实例. */ private File(String child, File parent) { ... } /** * 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例. */ public File(String pathname) { ... } 路径分隔符和默认名称分隔符 /