Java IO体系之File类浅析

一、File类介绍

  位于java.io下的Java File类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录,该类实现了Serializable和Comparable<File>接口,意味着该类支持序列化,并且实例对象可进行比较。博主把它归于java io体系中

  File(文件)类这个名字有一定的误导性,我们可能会认为它指代的是文件,实际上却并非如此。它既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称

  File类不能用于文件的内容访问。

二、File类方法摘要:

构造方法摘要
File(File parent, String child)
          根据
parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)

          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)
          根据
parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri)

          通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

可通过以下构造方法创建一个File对象。

通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。

File(File parent, String child);

通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。

File(String pathname)

根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(String parent, String child)

通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。

File(URI uri)

创建File对象成功后,可以使用以下列表中的方法操作文件。

序号 方法描述
1 public String getName()
返回由此抽象路径名表示的文件或目录的名称。
2 public String getParent()、
返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null
3 public File getParentFile()
返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null
4 public String getPath()
将此抽象路径名转换为一个路径名字符串。
5 public boolean isAbsolute()
测试此抽象路径名是否为绝对路径名。
6 public String getAbsolutePath()
返回抽象路径名的绝对路径名字符串。
7 public boolean canRead()
测试应用程序是否可以读取此抽象路径名表示的文件。
8 public boolean canWrite()
测试应用程序是否可以修改此抽象路径名表示的文件。
9 public boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
10 public boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
11 public boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件。
12 public long lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。
13 public long length()
返回由此抽象路径名表示的文件的长度。
14 public boolean createNewFile() throws IOException
当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。
15 public boolean delete()
删除此抽象路径名表示的文件或目录。
16 public void deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
17 public String[] list()
返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。
18 public String[] list(FilenameFilter filter)
返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。
19 public File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
20 public File[] listFiles(FileFilter filter)
返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。
21 public boolean mkdir()
创建此抽象路径名指定的目录。
22 public boolean mkdirs()
创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。
23 public boolean renameTo(File dest)
重新命名此抽象路径名表示的文件。
24 public boolean setLastModified(long time)
设置由此抽象路径名所指定的文件或目录的最后一次修改时间。
25 public boolean setReadOnly()
标记此抽象路径名指定的文件或目录,以便只可对其进行读操作。
26 public static File createTempFile(String prefix, String suffix, File directory) throws IOException
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
27 public static File createTempFile(String prefix, String suffix) throws IOException
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
28 public int compareTo(File pathname)
按字母顺序比较两个抽象路径名。
29 public int compareTo(Object o)
按字母顺序比较抽象路径名与给定对象。
30 public boolean equals(Object obj)
测试此抽象路径名与给定对象是否相等。
31 public String toString()
返回此抽象路径名的路径名字符串。

三、实例分析:

File类常用API实例:

 package me.io.file;

 import java.io.File;
import java.io.IOException; public class FileDemo { public static void main(String[] args) {
// 了解构造函数的情况 查帮助
File file = new File("E:\\javaio\\file");
// System.out.println(file.exists());
if (!file.exists())
file.mkdir(); // file.mkdirs()
else
file.delete();
// 是否是一个目录 如果是目录返回true,如果不是目录or目录不存在返回的是false
System.out.println(file.isDirectory());
// 是否是一个文件
System.out.println(file.isFile()); // File file2 = new File("e:\\javaio\\日记1.txt");
File file2 = new File("e:\\javaio", "日记1.txt");
if (!file2.exists())
try {
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
else
file2.delete();
// 常用的File对象的API
System.out.println(file);// file.toString()的内容
System.out.println(file.getAbsolutePath());
System.out.println(file.getName());
System.out.println(file2.getName());
System.out.println(file.getParent());
System.out.println(file2.getParent());
System.out.println(file.getParentFile().getAbsolutePath());
}
}

遍历目录:

     /**
* 列出指定目录下(包括其子目录)的所有文件
*
* @param dir
*/
public static void listDirectory(File dir) {
if (!dir.exists()) {
throw new IllegalArgumentException("目录" + dir + "不存在!");
}
if (!dir.isDirectory()) {
throw new IllegalArgumentException(dir + "不是目录!");
}
/*
* String[] fileNames = dir.list();//返回的是字符串数组 for (String fileName :
* fileNames) { System.out.println(dir + "\\" +fileName); }
*/
// 如果要列出子目录下的文件,就要构造File对象做递归操作
File[] files = dir.listFiles();
if (files != null && files.length > 0)
for (File file : files) {
  if (file.isDirectory()) {
  //递归调用
  listDirectory(file);
  } else {
System.out.println(file);
  }
}
}

参考文章:

  http://www.runoob.com/java/java-file.html

Java IO体系之File类浅析的更多相关文章

  1. JAVA基础知识之IO——Java IO体系及常用类

    Java IO体系 个人觉得可以用"字节流操作类和字符流操作类组成了Java IO体系"来高度概括Java IO体系. 借用几张网络图片来说明(图片来自 http://blog.c ...

  2. java io学习之File类

    1.先看下四个静态变量 static String pathSeparator The system-dependent path-separator character, represented a ...

  3. java io知识点汇总FIle类

    1.路径分隔符问题: 因为java有跨平台行,而在windows和linux中的目录分隔符是不同的.windows是"\" 而linux是"/"  所以必须想办 ...

  4. 【Java IO流】File类的使用

    File类的使用 Java中的File类是在java.io.File中,Java.IO.File类表示文件或目录. File类只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. 一 ...

  5. java IO(一):File类

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  6. java IO流之——File类知识总结和面试

    File类描述的是一个文件或文件夹.(文件夹也可以称为目录).该类的出现是对文件系统的中的文件以及文件夹进行对象的封装.可以通过对象的思想来操作文件以及文件夹.可以用面向对象的处理问题,通过该对象的方 ...

  7. java IO流 之 FIle类基础

    package IO; import java.io.File;import java.io.IOException; public class FileIO { /** * 构建及获取文件名信息 * ...

  8. Java IO体系之RandomAccessFile浅析

    Java IO体系之RandomAccessFile浅析 一.RandomAccessFile综述: 1.1RandomAccessFile简介 RandomAccessFile是java Io体系中 ...

  9. Java IO体系综述

    Java IO体系综述 一.流的概念 在Java API中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称作输出流.这些字节序列的来源地和目的地可以是文件,而且通常都 ...

随机推荐

  1. typedef int a[10];怎么解释?

    typedef int a[10]; a b[10]; 为什么分配400个字节的空间? int a[10];为什么分配了40个字节的空间? 问题:应该怎么解释typedef的这种行为呢?而如果换成是# ...

  2. Linux系统安装jdk——rpm版

    这里简单地阐述一下rpm.deb.tar.gz的区别. rpm格式的软件包适用于基于Red Hat发行版的系统,如Red Hat Linux.SUSE.Fedora. deb格式的软件包则是适用于基于 ...

  3. zabbix3.4用Python脚本Excel批量导入主机

    1.安装xlrd读取Excel文件 1.1. 下载setuptools-38.2.4.zip,上传至zabbix服务器解压安装,下载地址:https://pypi.python.org/package ...

  4. git rebase 理解

    摘录自:https://blog.csdn.net/wangnan9279/article/details/79287631

  5. LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素

    题目 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. 您能 ...

  6. HDU 多校 第三场 Fansblog

    代码千万条,规范第一条 训练赛的时候打表找规律,发现答案是1/(st-pre-1)!,奈何用错了模板,一直TLE到比赛结束,一直以为是卡什么输入输出或者是两个素数相差太大导致复杂度过高,读入优化啥的都 ...

  7. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十一)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  8. Linux命令(部分)

    LINUX:实现某一功能,命令执行依赖于解释器程序.       内部:属于shell部分       外部:独立于shell解释器程序.       系统结构由外到内:用户 ⇢ 外围程序 ⇢ 硬件  ...

  9. Lexical or preprocessor 'XXX/XXX.h' issue file not found

    最近做第三方登录,引入了第三库,结果就出来个这个问题.如下图所示: 刚开始编译运行都没问题,可下次再打开时就报这个错误…… 一个比较弱智的解决办法: 1. 删除第三方库文件(删除到垃圾箱,而且还要在文 ...

  10. ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core

    前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ...