关闭

Java基础-File概述

标签: javaFileapi源码
336人阅读 评论(0) 收藏 举报
分类:


File类的概述

File更应该叫做一个路径

文件路径或者文件夹路径
路径分为绝对路径和相对路径
绝对路径是一个固定的路径,从盘符开始
相对路径相对于某个位置,在eclipse下是指当前项目下,在dos下

查看API指的是当前路径

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

构造方法

	* File(String pathname):根据一个路径得到File对象
	* File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
	* File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象

File类的创建功能

	* public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
	* public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
	* public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来

	public static void main(String[] args) {
		File file1 = new File("file1.txt");
		System.out.println(file1.createNewFile());			//如果没有就创建,返回true
		
		File file2 = new File("file2");
		System.out.println(file2.createNewFile());
		
		File dir1 = new File("dir1");
		System.out.println(dir1.mkdir());
		
		File dir2 = new File("dir2.txt");				//这样写是可以的,文件夹也是可以有后缀的
		System.out.println(dir2.mkdir());
		
		File dir3 = new File("dir3\\dir3_1");
		System.out.println(dir3.mkdirs()); 				//创建多级目录
	}
	/*
	 * outPut:
	 * true
	 * true
	 * true
	 * true
	 * true
	 */

创建前:                      创建后:

注意事项:

如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。

File类的重命名和删除功能

	* public boolean renameTo(File dest):把文件重命名为指定的文件路径
	* public boolean delete():删除文件或者文件夹

重命名注意事项

如果路径名相同,就是改名。

如果路径名不同,就是改名并剪切。

删除注意事项

Java中的删除不走回收站。

要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

File类的判断功能

	* public boolean isDirectory():判断是否是目录
	* public boolean isFile():判断是否是文件
	* public boolean exists():判断是否存在
	* public boolean canRead():判断是否可读
	* public boolean canWrite():判断是否可写
	* public boolean isHidden():判断是否隐藏

	public static void main(String[] args) {
		File dir1 = new File("file1.txt");
		System.out.println(dir1.isDirectory());			//判断是否是目录
		
		File dir2 = new File("dir1");
		System.out.println(dir2.isDirectory());
		File dir3 = new File("E:\\");
		System.out.println(dir3.isDirectory());
		
		System.out.println("------");
		
		System.out.println(dir1.isFile());				//判断是否是文件
		System.out.println(dir2.isFile());
		
		System.out.println("------");
		
		File file1 = new File("file1.txt");
		file1.setReadable(false);
		System.out.println(file1.canRead()); 			//windows系统认为所有的文件都是可读的
		file1.setWritable(false);
		System.out.println(file1.canWrite()); 			//windows系统可以设置为不可写
		
		System.out.println("------");
		
		File file2 = new File("dir1");
		System.out.println(file2.isHidden());			//判断是否是隐藏文件
		System.out.println(file1.isHidden());
	}

false
true
true
------
true
false
------
true
false
------
false
true

File类的获取功能

	* public String getAbsolutePath():获取绝对路径
	* public String getPath():获取路径
	* public String getName():获取名称
	* public long length():获取长度。字节数
	* public long lastModified():获取最后一次的修改时间,毫秒值
	* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
	* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 


	    public static void main(String[] args) throws IOException {
        File file1 = new File("file1.txt");
        File file2 = new File("E:/StudyHard/File/dir");
        System.out.println(file1.getAbsolutePath());            //获取绝对路径
        System.out.println(file2.getAbsolutePath());
        
        System.out.println(file1.getPath());                    //获取构造方法中传入路径
        System.out.println(file2.getPath());
        
        System.out.println(file1.getName());                    //获取文件或者文件的名字
        System.out.println(file2.getName());
        
        System.out.println("--------");
        
        System.out.println(file2.length());                        //如果是目录定为0
        
        System.out.println("--------");
        
        Date d = new Date(file1.lastModified());                //文件的最后修改时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        System.out.println(sdf.format(d));
        
        System.out.println("--------");
        
        File dir = new File("E:/StudyHard/File");
        String[] fileNames = dir.list(); //若dir为文件,则返回null
        System.out.println(fileNames.length);
        
        File[] files = dir.listFiles();
        System.out.println(files.length);
    }

E:\StudyHard\File\file1.txt
E:\StudyHard\File\dir
file1.txt
E:\StudyHard\File\dir
file1.txt
dir
--------
0
--------
2016年08月29日 18:27:29
--------
10
10

文件名称过滤器的概述及使用

	* public String[] list(FilenameFilter filter)
	* public File[] listFiles(FileFilter filter)


	public static void main(String[] args) throws IOException {
		File dir = new File("E:\\");
		String[] arr = dir.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				File file = new File(dir,name);
				return file.isFile() && file.getName().endsWith(".jpg");
			}
		});
		System.out.println(arr.length);
	}

简单源码分析(JDK1.8)

    public String[] list(FilenameFilter filter) {
        String names[] = list(); //list方法获取该目录下所有文件名
        if ((names == null) || (filter == null)) {
            return names;
        }
        List<String> v = new ArrayList<>();//创建一个List集合
        for (int i = 0 ; i < names.length ; i++) {//遍历names
            if (filter.accept(this, names[i])) {//根据我们创建的filter的条件(返回true or false)过滤
                v.add(names[i]);
            }
        }
        return v.toArray(new String[v.size()]);//最后将集合转换为数组
    }

File小习

需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名

	public static void main(String[] args) throws IOException {
		File dir = getDir();
		printJavaFile(dir);
	}
	public static File getDir() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入一个文件夹路径");
		while(true) {
			String line = scanner.nextLine();
			File dir = new File(line);
			if(!dir.exists()) {
				System.out.println("您录入的文件夹路径不存在,请重新录入");
			} else if(dir.isFile()) {
				System.out.println("您录入的是文件路径,请重新录入文件夹路径");
			} else {
				scanner.close();
				return dir;
			}
		}
	}
	public static void printJavaFile(File dir) {
		File[] subFiles = dir.listFiles();
		for (File file : subFiles) {
			if(file.isFile() && file.getName().endsWith(".java")) {
				System.out.println(file);
			} else if(file.isDirectory()){
				printJavaFile(file);//如果是文件夹则递归调用
			}
		}
	}

0
0
查看评论

计算机网络基础知识点学习(一)(概述)

1.通常所说的网络是指“三网”,即电信网络、有线电视网络、计算机网络。发展最快并起到核心作用的是计算机网络。 2.计算机网络向用户提供的最重要的功能:连通性-计算机网络使上网用户之间都可以交换信息;资源共享-信息共享、软件共享、硬件共享等。 3.因特网-起源于美国的因特网发展成为世界上最大的国际...
  • fenxinzi557
  • fenxinzi557
  • 2016-07-23 09:37
  • 905

23种基本设计模式-概述

设计模式,可以使代码更简洁、更优美、更效率、扩展性型更强。 本文对基础知识就不过多阐述了。 对于接口,引申出两个概念:标识接口(没有声明任何方法的接口)和桩(实现了接口,但是实现方法体为空的类)。 标识接口:用来标识某个类符合一定的规范。(对于有人制定规则的前提下,这种标识非常有用,如何不遵守这种规...
  • grp3143167
  • grp3143167
  • 2016-04-19 13:48
  • 1146

【Mock】之基础介绍

测试驱动开发(TDD)这个概念想必大家都有所了解了,在以往内部逻辑开发完成进行单元测试,抑或是在协同作战、并行工作、跨部门、跨行业协作的过程中,可能都会发现一些测试无从下手,因为被测试模块需要和一些不容易构造、比较复杂的对象进行交互,没法完成整个业务流程的测试,当然可以通过临时的#if...#els...
  • webwalker
  • webwalker
  • 2012-09-21 12:06
  • 697

java接口概述

接口:        是一些方法特征的集合,而这些方法可以被多个实现类去各自实现。 接口主要特征:        1、接口中的成员变量隐士的被定义为公开的静态常量     ...
  • andywuchuanlong
  • andywuchuanlong
  • 2014-05-14 20:51
  • 1653

Libuv库概述

[-] 序言 本书为谁而写背景本书代码 Libuv 基础 事件循环Event loopsHello World libuv 的默认事件循环Default loop 监视器Watchers 空转Idling 文件系统 读写文件文件系统相关操作Filesystem operations缓冲...
  • zhu2695
  • zhu2695
  • 2016-04-25 22:55
  • 832

Spring 框架概述(一)

Spring 框架参考文档(一) 文章摘自:http://spring.cndocs.tk/index.html Part I. Spring 框架概述 Spring框架是一个轻量级解决方案,也是潜在的开发企业级应用的一站式解决方案.而且Spring也...
  • xiangjai
  • xiangjai
  • 2016-12-31 10:36
  • 1296

Spring mvc基本概述

Spring mvc主要是围绕DispatcherServlet这个核心控制器来开展的,DispatcherServlet是Spring mvc的总导演、总策划,它负责截获请求并且将其分发给对应的处理器。Spring mvc框架包括注解驱动控制程序、请求以及响应的信息处理、视图处理、本地化处理、上传...
  • u012832964
  • u012832964
  • 2016-07-22 23:08
  • 1137

JavaWeb开发概述

JavaWeb开发入门,目录:JavaScript,XML解析器,JavaWeb开发入门,Http协议,Servlet技术,请求和响应,Cookie和Session,MySQL数据库,用JDBC操作数据库,JDBC之数据库连接池,JDBC之事务,上传下载文件,酷炫的文件上传技术,JavaMail邮件
  • axi295309066
  • axi295309066
  • 2016-10-30 12:43
  • 2292

信息安全基础知识总结-信息安全概述

      一转眼,四年的大学生活就要结束了,还真有点不舍得。之前一直抱怨学校这培养计划安排的整么整么恶心,羡慕这个羡慕那个的,但到现在回过头来,静下心来想一想,再看一看那些专业培训的课程安排,发现:其实把这学过几门专业基础课(密码学,计算机网络,网...
  • miromelo
  • miromelo
  • 2010-11-05 13:22
  • 6393

JavaWeb之概述

胖客户端与瘦客户端        胖客户端程序指的是,当一个程序运行时需要一个单独的客户端程序支持。例如,登录QQ时,就需要一个客户端的程序运行。而瘦客户端操作时不需要进行任何其他程序的安装,直接使用即可。例如,登录网上论坛,只需要一个浏览...
  • u010933680
  • u010933680
  • 2013-11-17 10:11
  • 1063
    个人资料
    • 访问:26704次
    • 积分:937
    • 等级:
    • 排名:千里之外
    • 原创:69篇
    • 转载:7篇
    • 译文:0篇
    • 评论:7条
    文章分类