(Java)IO流对象(一)File类

【File分隔符】--File静态变量

import java.io.File;
/*
 *  java.io.File
 *       将操作系统中的,文件(file),目录(directory)(文件夹),路径(path),封装成File对象
 *       提供方法,操作系统中的内容    File是与系统无关的类
 */
public class FileDemo1 {
	public static void main(String[] args) {
		//File静态成员变量
	    // 与系统有关的路径分隔符
		String separator = File.pathSeparator;
		System.out.println(separator);         //目录的分隔符  windows 下是一个;     Linux  下是:
		
		// 与系统有关的默认名称分隔符
		separator = File.separator;
		System.out.println(separator);        //目录名称分隔符  向右 \               Linux  下是/ 
	}
}

【File构造方法】

import java.io.File;
/*
 *  File类的构造方法
 */
/*
 *  路径
 *    绝对路径:在系统中具有唯一性
 *          c:\\windows\\system32
 *          http://www.XXX.cn
 *    相对路径:表示的是路径之间的相对关系
 *          E:\\workspace\\day20\\bin\\dfs
 *          E:\\workspace\\day20\\src
 *          路径之间的关系:
 *          day20的父目录是E:\\workspace
 *          day20的子目录是src、bin
 *          父目录是唯一的
 *          子目录可以有多个
 */
public class FileDemo2 {
	public static void main(String[] args) {
		function_3();
	}
	/*
	 *1. File(String pathname)    将路径封装成File类型的对象
	 *   传递路径名:可以写到一个文件夹,也可以写到一个文件
	 *   c:\\abc        c:\\abc\\Demo.java
	 */
	public static void function_1(){
		File file = new File("E:\\workspace");
		System.out.println(file);                // E:\workspace
	}
	
	/*
	 * 2. File(String parent, String child)  字符串父路径,字符串子路径
	 */
	public static void function_2(){
		File file = new File("c:","windows");     // c:\windows
		System.out.println(file);
	}
	
	/*
	 * 3. File(File parent, String child)   File类型父路径,String类型子路径
	 */
	public static void function_3(){
		File parent = new File("d:");
		File file = new  File(parent, "eclipse");
		System.out.println(file);	              // d:\eclipse
	}

}

【创建或删除文件、文件夹】

import java.io.File;
import java.io.IOException;
/*
 * File类的创建和删除
 */
public class FileDemo3 {
	public static void main(String[] args) throws IOException{
		function_3();
	}
	/*1. File创建文件的功能   boolean createNewFile()
	 *     创建的文件路径和文件名,在File构造方法中给出
	 *     若文件已经存在就不在创建,返回false
	 */
	public static void function_1() throws IOException{
		File file = new File("E:\\workspace\\a.txt");
		boolean b = file.createNewFile();
		System.out.println(b);	
	}
	
	/* 2. 创建文件夹功能     boolean  mkdirs()   创建多层文件夹
	 *      创建的路径也在File构造方法中给出
	 *      若文件已经存在就不在创建,返回false
	 */
	public static void function_2(){
		File file = new File("E:\\workspace\\day22_1\\acf");
		boolean b = file.mkdirs();
		System.out.println(b);
	}
	
	/*3. 删除功能   boolean delete()   删除文件或者文件夹
	 *         路径也在File构造方法中给出
	 *         删除成功返回true,删除失败返回false
	 *   注意:删除方法,不走回收站,直接从硬盘中删除   删除有风险,运行需谨慎
	 */
	public static void function_3(){
		File file = new File("E:\\workspace\\day22_1");
		boolean b = file.delete();
		System.out.println(b);
	}

}

【获取功能】

import java.io.File;
/*
 * File类的获取功能
 */
public class FileDemo4 {
	public static void main(String[] args) {
		function_4();
	}
	
	/*1.File类的获取功能     String  getName()
	 *       返回路径中表示的文件或者文件夹名
	 *       获取路径中的最后部分的名字
	 */
	public static void function_1(){
		File file =new File("E:\\workspace\\day22\\src\\usst\\javacode\\Demo1\\FileDemo1.java");
		String name = file.getName();
		System.out.println(name);         // FileDemo1.java
		
		String path = file.getPath();
		System.out.println(path);        // 
	}
	
	/*2.File类的获取功能  long length()
	 *       返回路径中表示的文件的字节数
	 */
	public static void function_2(){
		File file =new File("E:\\workspace\\day22\\src\\usst\\javacode\\Demo1\\FileDemo1.java");
		long length = file.length();
		System.out.println(length);     //669
	}
	
	/*3. String getAbsolutePath()  返回String对象
	 *   File   getAbsoluteFile()  返回File对象
	 *   获取绝对路径
	 *   eclipse环境中,写的是相对路径,返回的是绝对位置工程根目录
	 */
	public static void function_3(){
		File file = new File("src");
		File absolute = file.getAbsoluteFile();
		System.out.println(absolute); // E:\workspace\day22\src
	}
	
	/*4.  String getParent()    返回String对象
	 *    File   getParentFile()   返回File对象
	 *    获取父路径
	 */
	public static void function_4(){
		File file =new File("E:\\workspace\\FileDemo1.java");
		File parent = file.getParentFile();
		System.out.println(parent); // E:\workspace
	}

}

【File判断功能】

import java.io.File;
/*
 * File判断功能
 */
public class FileDemo5 {
	public static void main(String[] args) {
		function_2();
	}
	
	/*1. boolean  exists()   判断File构造方法中封装的路径是否存在
	 *            存在返回true  不存在返回false
	 */
	public static void function_1(){
		File file = new File("src");
		boolean b = file.exists();
		System.out.println(b);  
	}
	
	/*2. boolean isDirectory() 判断File构造方法中封装的路径是不是文件夹
	 *           若是文件夹返回true,不是文件夹返回false
	 *   boolean isFile()    判断File构造方法中封装的路径是不是文件
	 */
	public static void function_2(){
		File file = new File("E:\\eclipse");
		boolean b = file.isDirectory();
		System.out.println(b);
	}

}

【File类的获取功能】

import java.io.File;
/*
 * File类的获取功能
 */
public class FileDemo6 {
	public static void main(String[] args) {
		function_3();
	}
	
    // 1.  String[]  list()  获取到,File构造方法中封装的路径中的文件和文件夹名(遍历一个目录)
	public static void function_1(){
		File file = new File("E:\\eclipse");
		String[] strarr = file.list();
		
		for(String s:strarr){
			System.out.println(s);     //  artifacts.xml ......  
		}
	}
	
	// 2.  File[]  listFiles()  返回的是目录或文件的全路径
	public static void function_2(){
		File file = new File("E:\\eclipse");
		File[] strarr = file.listFiles();
		
		for(File s:strarr){
			String s1 = s.toString();   // 转换成字符串形式
			System.out.println(s1);     // E:\eclipse\.eclipseproduct ......
		}
	}
	
	// 3.   File[]  listRoots()  获取系统中所有跟目录
	public static void function_3(){
		File[] file = File.listRoots();
		for(File f:file){
			System.out.println(f);      // C:\  D:\   E:\  G:\
		}
	}

}

【文件过滤器】

import java.io.File;
import java.io.FileFilter;
/*
 * 自定义过滤器
 *  实现FileFilter接口,重写抽象方法  boolean accept(File pathname)
 */
public class MyFilter implements FileFilter{
	// listFiles() 调用方法accept()  必须传递参数
	public boolean accept(File pathname){
		// pathname 接受的也是文件的全路径    E:\workspace\Demo\sfa.java
		// 对文件进行判断(文件的后缀结尾是.java),若是java文件返回true, 否则返回false
		String str = pathname.getName();  // 获取路径中最后部分的名字
        return str.endsWith(".java");     // 判断一个字符串的结尾是否为".java",若是返回true ,否则返回false
	}
}

import java.io.File;
/*
 *  File类的获取,文件获取过滤器
 *  遍历目录的时候,可以根据需要,只获取满足条件的文件
 *  遍历目录方法listFiles()的重载形式      listFiles(FileFilter filter) 接口类型
 *          传递FileFilter接口的实现类(自定义FileFilter接口实现类,重写抽象方法)
 */
public class FileFilterDemo1 {
	public static void main(String[] args) {
		File file = new File("E:\\workspace\\Demo");
		// 1. listFiles()遍历目录的同时,获得文件名全路径,调用过滤器的方法accept(File pathname),并将路径传给参数pathname
		// 2. 在accept方法中进行判断,若这个文件是java文件,返回true,否则返回false。
		// 3. 一旦方法返回true,listFiles()将路径保存到fileArr中
		File[] fileArr = file.listFiles(new MyFilter());
		for(File s:fileArr){
			System.out.println(s);
		}
	}

}

【递归调用全目录】

import java.io.File;
/*
 * 对"E:\\workspace\\Demo"目录下的所有内容,进行完全的遍历
 */
public class FileDemo7 {
	public static void main(String args[]){
		File file = new File("E:\\workspace\\Demo");
		getAllDir(file);
	}
	
	//  定义方法,实现目录的全遍历
	public static void getAllDir(File dir){
		System.out.println(dir);
		
		// 调用listFiles()方法对dir进行遍历
		File[] listDir = dir.listFiles();
		for(File f:listDir){

			// 若 f 为文件夹,调用函数getAllDir()对f进行遍历
			if(f.isDirectory()){                    // 判断是否为文件夹,若是则返回true,否则返回false
				//System.out.println(f);
				getAllDir(f);
			// 若 f 不是文件夹,则直接输出f	
			}else{
				System.out.println(f);
			}
		}	
	}
	
}
/*  打印输出
   E:\workspace\Demo
   E:\workspace\Demo\a
   E:\workspace\Demo\a\1.txt
   E:\workspace\Demo\ab.txt
   E:\workspace\Demo\b
   E:\workspace\Demo\b\1.txt
   E:\workspace\Demo\sfa.java
 */

【递归】

/*
 * 方法的递归调用: 方法自己调用自己
 *    适用于:方法的主体不变,但是运行的时候参与的方法参数会发生改变
 * 注意: 1. 递归一定要有出口,必须要程序能停下来
 *     2. 递归次数不能过多
 *     3. 构造方法禁止递归 
 */
public class DiGuiDemo1 {
	public static void main(String[] args) {
		int sum = getSum(4);
		System.out.println(sum);         // 6
		System.out.println(getFB(3));    // 2
	}
	
	// 1. 利用递归的思想,求1+2+3+...+n之和
	//           也可以计算阶乘 ,将n+getSum(n-1)改为n*getSum(n-1)
	public static int getSum(int n){
		// 递归返回条件 
		if(n == 1)
			return 1;
		return n+getSum(n-1);
	}
	
	// 2. 利用递归的思想,求斐波那契数列  0 1 1 2 3 5 8 13 21
	public static int getFB(int month){
		if(month == 0)
			return 0;
		if(month == 1)
			return 1;
		return getFB(month-1)+getFB(month-2);
	}
}

【遍历目录下的所有.java文件】

import java.io.File;
import java.io.FileFilter;
public class MyFilter implements FileFilter {
	@Override
	// 若为文件夹或文件名是".java"返回true,否则返回false
	public boolean accept(File pathname) {
		// 获取路径中的文件名,并将文件名转化为小写
		if(pathname.isDirectory())
			return true;
		String str = pathname.getName().toLowerCase();
		return str.endsWith(".java");
	}
}

import java.io.File;
/*
 *   寻找目录"E:\workspace\Demo"下的所有.java文件
 */
public class FileFilterDemo1 {
	public static void main(String[] args) {
		File file = new File("E:\\workspace\\Demo");
		getAllJava(file);
	}
	
	// 利用递归的思想获取指定文件夹下的".java"文件
	public static void getAllJava(File file){
		// 调用File 对象方法listFile() 并加入过滤器  
		File[] fileArr = file.listFiles(new MyFilter());
	
		for(File f:fileArr){
			// 对 f 路径进行判断是否为文件夹
			if(f.isDirectory()){
				// 递归进入文件夹遍历
				getAllJava(f);
			}else{
				System.out.println(f);
			}
		}
	}
}
/*
 E:\workspace\Demo\a\zx.java
 E:\workspace\Demo\b\ew.JAVA
 E:\workspace\Demo\sfa.java
 */

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值