IO知识点(一)—— Java的 File类,以及常用方法

注意:文件和文件夹都是用 File 代表

 

1,创建一个文件对象

 使用绝对路径或者相对路径创建 File对象

public class AtWill {

    public static void main(String[] args) {
        // 绝对路径
        File f1 = new File("H:\\码云project1");
        System.out.println("f1的绝对路径:" + f1.getAbsolutePath());

        // 相对路径,相对于工作目录,如果在eclipse中,就是项目目录
        File f2 = new File("test.txt");
        System.out.println("f2的绝对路径:" + f2.getAbsolutePath());
  
        // 把f1作为父目录创建文件对象(常用)
        File f3 = new File(f1, "test.txt");
        System.out.println("f3的绝对路径:" + f3.getAbsolutePath());
    }
}

2,文件常用方法1

注意1: 需要在H:\\码云project\\gogo\\确实存在一个lala1.txt,才可以看到对应的文件长度、修改时间等信息

注意2: renameTo方法用于对物理文件名称进行修改,但是并不会修改File对象的name属性。 

public class AtWill {

	public static void main(String[] args) {
		  
        File file = new File("H:\\码云project\\gogo\\lala1.txt");
        System.out.println("当前文件是:" +file);
        
        // 文件是否存在
        System.out.println("判断是否存在:"+file.exists());
         
        // 是否是文件夹
        System.out.println("判断是否是文件夹:"+file.isDirectory());
          
        // 是否是文件(非文件夹)
        System.out.println("判断是否是文件:"+file.isFile());
          
        // 文件长度
        System.out.println("获取文件的长度:"+file.length());
          
        // 文件最后修改时间
        long time = file.lastModified();
        Date d = new Date(time);
        System.out.println("获取文件的最后修改时间:"+d);
        // 设置文件修改时间为1970.1.1 08:00:00
        file.setLastModified(0);
        // 修改后——》该文件的最后修改时间属性,会修改
        long time6 = file.lastModified();
        Date d6 = new Date(time6);
        System.out.println("修改了最后修改时间后,最后修改时间属性变为:"+d6);
          
        // 文件重命名(lala1——》lala6)
        File f2 =new File("H:\\码云project\\gogo\\lala.text");
        file.renameTo(f2);
        // 修改后——》该文件名属性,并不会修改
        System.out.println("修改了文件名后,文件名属性变为:"+file);
         
	}
}

3,文件常用方法2

public class TestFile {
  
    public static void main(String[] args) throws IOException {
  
        File f = new File("d:/LOLFolder/skin/garen.ski");
  
        // 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
        f.list();
  
        // 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
        File[]fs= f.listFiles();
  
        // 以字符串形式返回获取所在文件夹
        f.getParent();
  
        // 以文件形式返回获取所在文件夹
        f.getParentFile();
        // 创建文件夹,如果父文件夹skin不存在,创建就无效
        f.mkdir();
  
        // 创建文件夹,如果父文件夹skin不存在,就会创建父文件夹
        f.mkdirs();

		File f = new File("H:\\码云project1\\test3");
        // 创建一个空文件,如果父文件夹skin不存在,就会抛出异常
        f.createNewFile();
        // 所以创建一个空文件之前,通常都会创建父目录
        f.getParentFile().mkdirs();
        try {
			f.createNewFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

        // 列出所有的盘符c: d: e: 等等
        File[] sss = f.listRoots();
        for(File file2 : sss) {
        	System.out.println(file2);
        }
  
        // 刪除文件
        f.delete();
  
        // JVM结束的时候,刪除文件,常用于临时文件的删除
        f.deleteOnExit();
  
    }
}

4,练习-遍历文件夹1

一般说来操作系统都会安装在C盘,所以会有一个 C:\WINDOWS目录。

遍历这个目录下所有的文件(不用遍历子目录)

找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名

注: 最小的文件不能是0长度 

public class AtWill {

	public static void main(String[] args) {
	
		File file = new File("C:\\WINDOWS");
		File[] files = file.listFiles();
		
		File max = null;
		File min = null;
		// 取出一个字节大小大于0的文件,用于作为判断最大或最小初始文件
		for(File f : files) {
			if(f.length() != 0) {
				max = f;
				min = f;
				break;
			}
		}
		
		for(int i=0; i<files.length; i++) {
			if(max.length() < files[i].length()) {
				max = files[i];
			}
		}
		for(int i=0; i<files.length; i++) {
			if(min.length() > files[i].length() && files[i].length()!=0) {
				min = files[i];
			}
		}
		System.out.println("最大的文件是:"+max+" ,其字节大小是"+max.length());
		System.out.println("最小的文件是:"+min+" ,其字节大小是"+min.length());
	
	}
}

5,练习-遍历子文件夹1(递归)

public class AtWill {

	public static void main(String[] args) {
		File file = new File("H:\\码云project");
		File f[] = file.listFiles();
		show(f);
	}

	public static void show(File dir[]) {
		if (dir == null) {
			return;
		} else {
			for (File fi : dir) {
				if (fi.isDirectory()) {
					show(fi.listFiles());
				}
				if (fi.isFile()) {
					System.out.println(fi.getName());
				}
			}
		}
	}
}

 

参考来源于:

http://how2j.cn/k/io/io-file/345.html?p=48616

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值