一、File类概述

File类是文件和目录路径名的抽象表示形式。File类可以理解为一个文件路径或者文件夹路径的JAVA表现形式,
而路径又可以分为绝对路径(是一个固定路径,从盘符开始),相对路径(相对于eclipse下的路径)。
  举例:
绝对路径:D:\\eclipse
相对路径:java.txt

二、常用构造方法

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

 //File(String pathname)构造
File f=new File("d:\\lcy");
//exists()方法为测试此抽象路径名表示的文件或目录是否存在。
System.out.println(f.exists());
//File(String parent, String child)构造
File f1=new File("D:\\lcy", "a1.txt");
System.out.println(f1.exists());
//File(File parent, String child)构造
File f3 = new File(f,"a1.txt");
System.out.println(f3.exists());

三、常用方法

File类的方法按照用途的不同可以大致分为:创建功能、修改功能(重命名和删除)、

判断功能(判断是文件夹还是文件)、获取功能(获取文件名数组,获取文件大小等)。

1、创建功能

createNewFile():创建文件 如果存在这样的文件,就不创建了
    mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
    mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
  这三个方法都是无参返回值为boolean类型的方法,其中mkdirs()方法最为常用,因为File类一般都是与IO流一同使用
而输出流在目标文件不存在的时候回自动帮你创建文件。
  举例:

 //createNewFile()方法创建文件
File file = new File("a.txt");
System.out.println(file.createNewFile());
//在相对路径下创建b文件夹
File file2 = new File("b");
System.out.println(file2 .mkdirs());
//在相对路径下创建d文件夹,mkdirs()方法会自动帮你创建父文件夹
File file3 = new File("c/s/d");
System.out.println(file3.mkdirs());

2、修改功能

renameTo(File dest):把文件重命名为指定的文件路径。
  返回值为boolean类型,需要注意的是如果路径名相同,就是改名。如果路径名不同,就是改名并剪切。
    delete():删除文件或者文件夹。
  注意:只能删除空的文件夹,如果文件夹里有文件想要删除,则需要先把文件删除。

3、判断功能

isDirectory():判断是否是目录
    isFile():判断是否是文件
    exists():判断是否存在
    isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件
    isAbsolute():测试此抽象路径名是否为绝对路径
  这三个方法一般和if语句一起使用。
  举例:

 //判断是否为绝对路径
System.out.println(f.isAbsolute());
//判断是否为文件
System.out.println(file.isFile());
//判断是否为文件夹
System.out.println(file3.isDirectory());
//是否包含隐藏文件
System.err.println(f1.isHidden());

4、获取功能

getAbsolutePath():获取绝对路径 - 字符串
    getPath():获取路径 - 字符串
    getName():返回此路径名表示的文件或目录的名称。
    length():获取文件长度 - 字节数
    lastModified():获取最后一次的修改时间 - 毫秒值(lang类型)
    list():获取指定目录下的所有文件或者文件夹的名称数组 - 数组
    listFiles():获取指定目录下的所有文件或者文件夹的File数组 - 数组
    getAbsoluteFile():返回此相对路径的绝对路径 - File对象
    getAbsolutePath():返回此相对路径的绝对路径 - 字符串
    getParent():返回此路径名父目录的路径名字符串;如果没有父目录,则返回 null。
    getParentFile():返回此路径名父目录的路径对象;如果没有父目录,则返回 null。

举例:

 //返回此相对路径的绝对路径 - File对象
System.out.println(file2.getAbsoluteFile());
//返回此相对路径的绝对路径 - 字符串
System.out.println(file3.getAbsolutePath());
//获取此路径名父目录的路径名字符串
System.out.println(f3.getParent());
//获取此路径名父目录的路径对象
System.out.println(f3.getParentFile());
//获取文件长度
System.out.println(file.length());
//获取最后一次的修改时间
long lastModified = file.lastModified();
Date d=new Date(lastModified);
//用Date里的过时方法显示时间,格式如:2086-9-24 21:44:33
System.out.println(d.toLocaleString());
File file4 = new File("lcy.txt");
//将file改为file4
file.renameTo(file4);

四、File类的综合练习
    需求:统计文件夹里各个类型文件的个数,如:java类型的文件有 4 个、txt类型的文件有 77 个...... 。

实现步骤:

 // 创建一个HashMap,key用来存后缀名 value用来存个数
static HashMap<String, Integer> hs = new HashMap<>(); public static void main(String[] args) {
//目标文件夹的File对象
File file = new File("D:\\aa");
//将File对象传入到统计方法里
tj(file);
Set<Entry<String, Integer>> entrySet = hs.entrySet();
for (Entry<String, Integer> entry : entrySet) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "类型的文件有" + value + "个");
}
} // 定义统计方法
public static void tj(File f) {
//先判断是否为文件夹
if (f.isDirectory()) {
//判断是否为空
if (f != null) {
// System.out.println(f);
//获取此文件夹的所有文件或者文件夹的File数组
File[] listFiles = f.listFiles();
//遍历File[]
for (File file : listFiles) {
//判断文件夹里的内容是否是文件
//是文件
if (file.isFile()) {
//获取文件名
String name = file.getName();
//根据尾部的.截取字符串
String[] split = name.split("\\.");
// System.out.println(Arrays.toString(split));
// Set<String> keySet = hs.keySet();
//判断HashMap里是否有那个类型的文件
if (hs.containsKey(split[split.length - 1])) {
//有
//获取此文件类型的value值
Integer integer = hs.get(split[split.length - 1]);
//在此value值的基础上+1
hs.put(split[split.length - 1], integer + 1);
} else {
//没有
//value值设为以
hs.put(split[split.length - 1], 1);
} } else {
//是文件夹,继续执行此方法,直到没有文件夹为止,然后才一层一层的往回返。递归
tj(file);
}
}
}
}
}

JAVA基础-File类的更多相关文章

  1. java基础-System类常用方法介绍

    java基础-System类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.System类概念 在API中system类介绍的比较简单,我们给出定义,system中 ...

  2. java.io.File类

    java.io.File类 1.凡是与输入.输出相关的类.接口等都定义在java.io包下 2.File是一个类.能够有构造器创建其对象.此对象相应着一个文件(.txt .avi .doc .ppt ...

  3. JAVA之File类创建对象构造函数传参数需要注意的几点

    java中File类用于创建一个文件对象. 首先看一段代码: 1. package MyText1; import java.io.File; public class MyText1 { publi ...

  4. JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类

    字符串相关类: String, StringBuffer String类为不可变的字符序列 String s1="hello"; String s2="hello&quo ...

  5. Java之File类

    一.初见File类 java.io.File类代表系统中的文件(文件或目录) 常用构造方法 File(String pathname) File(String parent, String child ...

  6. java.io.File类操作

    一.java.io.File类 String path="E:/222/aaa";//路径 String path1="aaa.txt"; File file= ...

  7. Java文件File类学习总结

    java.io.File类 代表文件和目录,在开发中,读取文件.生成文件.删除文件.修改文件的属性都会用到该类. 常见构造方法: public File(String pathName){} 以pat ...

  8. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  9. java中File类的常用方法总结

    java中File类的常用方法 创建: createNewFile()在指定的路径创建一个空文件,成功返回true,如果已经存在就不创建,然后返回false. mkdir() 在指定的位置创建一个此抽 ...

随机推荐

  1. Mesos初步尝试

    记得几年前,用.net做分布式批处理的时候环境搭建很麻烦,虽然参数的分片算法.配置都搞定了,但是.net虚拟机的环境建立是个头疼的事: 节点要自己手工建 环境变量没法从前往后传递 批处理程序改动后的分 ...

  2. 主次设备号 Device Major and Minor Numbers

    对于一个设备文件而言真正重要的标志是它的主次设备号(major and minor device numbers).如果我们用ls命令列出/dev下的一个设备: frank@under:~$ ls - ...

  3. hbase分布式集群搭建

    hbase和hadoop一样也分为单机版.伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建. hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop ...

  4. MFC中应用对象的成员:窗口指针m_pMainWnd说明

    CVC_MFC_firstDlg dlg; //定义对话框对象m_pMainWnd = &dlg;  //这个定义的对话框 dlg 成为主窗口 应用程序对象成员变量m_pMainWnd是一个窗 ...

  5. AJAX扩展-POST传递参数并跳转页面

    拓展的代码: 这段代码的原理是创建一个表单,所有args都创建一个隐藏的input,用post方法把这些参数传递过去 注意form表单一定要加载到页面中,即下面代码中标红的部分,不然参数是无法被传递的 ...

  6. cron任务解释

    cron本来是在linux下的一个定时任务执行工具,现在很多语言都支持cron,本文参考https://en.wikipedia.org/wiki/Cron,解释一下cron配置. 概述 cron配置 ...

  7. 微信小程序教学第四章第一节(含视频):小程序中级实战教程:详情-页面制作

    详情 - 页面制作 本文配套视频地址: https://v.qq.com/x/page/o0555o20xjd.html 开始前请把 ch4-1 分支中的 code/ 目录导入微信开发工具 这一章节中 ...

  8. Huffman 哈夫曼编码与译码的原理剖析及C++实现

    原理 我们在信息存储时,希望以最少的空间去存储最大的数据,方便数据的传输,那么该怎样做呢? 我们想到将源信息转化为01序列存储,但是这样以来又有一个问题,就是子串匹配问题,我们为了解决这个方法,想到了 ...

  9. Swift MD5加密 所需桥接文件

    Swift MD5加密在github有一个非常好的第三方库,使用也比较简单,还有很多加密方法,如果需要,点击这里下载 对于那些不需要太多的加密,只需要MD5加密的同学,我建议还是不要用第三方库. 因为 ...

  10. Foreign websites

    [社交] 1.Twitter. It's what's happening. 2.Telegram Messenger 3.Facebook - Log In or Sign Up 4.Instagr ...