File类描述的是一个文件或文件夹。(文件夹也可以称为目录)。该类的出现是对文件系统的中的文件以及文件夹进行对象的封装。可以通过对象的思想来操作文件以及文件夹。可以用面向对象的处理问题,通过该对象的方法,可以得到文件或文件夹的信息方便了对文件与文件夹的属性信息进行操作。文件包含很多的信息:如文件名、创建修改时间、大小、可读可写属性等。

基本API

new File(String pathname);
通过将给定路径来创建一个新File实例。
new File(String parent, String child);
 根据parent路径名字符串和child路径名创建一个新File实例。parent是指上级目录的路径,完整的路径为parent+child.
new File(File parent, String child);
根据parent抽象路径名和child路径名创建一个新File实例。 parent是指上级目录的路径,完整的路径为parent.getPath()+child.
说明:如果指定的路径不存在(没有这个文件或是文件夹),不会抛异常,这时file.exists()返回false。

创建:

createNewFile()   //在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false

mkdir()           //在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。

mkdirs()          //在指定位置创建目录,这会创建路径中所有不存在的目录。

renameTo(File dest)  //重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。移动/重命名成功则返回true,失败则返回false。

删除:   

delete()
//删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。 deleteOnExit()
//在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除

判断:

exists()         //文件或文件夹是否存在。

isFile()          //是否是一个文件,如果不存在,则始终为false。

isDirectory()     //是否是一个目录,如果不存在,则始终为false。

isHidden()        //是否是一个隐藏的文件或是否是隐藏的目录。

isAbsolute()      //测试此抽象路径名是否为绝对路径名。

获取:

getName()    //获取文件或文件夹的名称,不包含上级路径。

getPath()    //返回绝对路径,可以是相对路径,但是目录要指定

getAbsolutePath()    //获取文件的绝对路径,与文件是否存在没关系

length()    // 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。

getParent()    //返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。

lastModified()    //获取最后一次被修改的时间。

staic File[] listRoots()    //列出所有的根目录(Window中就是所有系统的盘符)

list()    //返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。

list(FilenameFilter filter)    //返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。

listFiles()    //返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。

listFiles(FilenameFilter filter)    //返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。        

路径问题

对于UNIX平台,绝对路径名的前缀是"/"。相对路径名没有前缀。

对于Windows平台,绝对路径名的前缀由驱动器号和一个":"组成,例"c:\\..."。相对路径没有盘符前缀。

更专业的做法是使用File.separatorChar或者File.separator(前者为char,后者为String),这个值就会根据系统得到的相应的分割符。

常见File类的面试题目:

1、File类型中定义了什么方法来创建一级目录

mkdirs() //在指定位置创建目录,这会创建路径中所有不存在的目录。

2、File类型中定义了什么方法来判断一个文件是否存在

exists()         //文件或文件夹是否存在。

3、如何用Java代码列出一个目录下所有的文件?

//只查询当前目录
public class Main { public static void main(String[] args) {
File f = new File("d:");
for(File temp : f.listFiles()) {
if(temp.isFile()) {
System.out.println(temp.getName());
}
}
}
}

如果需要对文件夹继续展开

    public static void main(String[] args) {
showDirectory(new File("d:\\file"));
} public static void showDirectory(File f) {
_walkDirectory(f, 0);
} private static void _walkDirectory(File f, int level) {
if(f.isDirectory()) {
for(File temp : f.listFiles()) {
_walkDirectory(temp, level + 1);
}
}
else {
for(int i = 0; i < level - 1; i++) {
System.out.print("\t");
}
System.out.println(f.getName());
}
}

在Java 7中可以使用NIO.2的API来做同样的事情,代码如下所示:

  public static void main(String[] args) throws IOException {
Path initPath = Paths.get("/Users/Hao/Downloads");
Files.walkFileTree(initPath, new SimpleFileVisitor<Path>() { @Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
System.out.println(file.getFileName().toString());
return FileVisitResult.CONTINUE;
} });
}

java IO流之——File类知识总结和面试的更多相关文章

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

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

  2. java IO流 之 FIle类基础

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

  3. IO流,File类的测试........课堂加总结

    package liu0926; import java.io.File; import java.io.IOException; public class Text01 { public stati ...

  4. Java IO体系之File类浅析

    Java IO体系之File类浅析 一.File类介绍 位于java.io下的Java File类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等.File对 ...

  5. JAVASE(十六) IO流 :File类、节点流、缓冲流、转换流、编码集、对象流

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.File类型 1.1.File类的理解 File类是在java.io包下 File可以理解成一个文件 ...

  6. Java IO流中 File文件对象与Properties类(四)

    File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 booleancreateNewFile():创建新文件,如果 ...

  7. java基础——IO流之File类

    1.File类的构造方法: File(String  pathName):通过一个指定的字符串类型路径来创建一个文件对象 File  (String parent,String child):通过指定 ...

  8. Java中Io流操作-File类的常用操作-创建文件,创建文件夹

    package com.hxzy.IOSer; import java.io.File;import java.io.IOException; public class Demo03 { public ...

  9. java基础9(IO流)-File类

    File类 File:文件和目录路径名的抽象表示形式.即java中把文件或者目录都封装成File对象 代码练习1 import java.io.File; public class FileDemo1 ...

随机推荐

  1. Java EE之会话

    1.需要会话的原因 所有HTTP服务器技术都普遍采用HTTP会话的概念,并且Java EE也在规范中添加了对会话的支持. 维持状态 会话用于维持请求和请求之间的状态.HTTP请求自身是完全无状态的.从 ...

  2. Android Fragment 替代方案

    refs: Square 开源库Flow和Mortar的介绍https://github.com/hehonghui/android-tech-frontier/tree/master/android ...

  3. Android系统权限和root权限

    Android系统权限和root权限http://www.verydemo.com/demo_c189_i277.html

  4. LGP4577【JSOI2018】战争

    题解: 求出$A$ 和$-B$ 的$Minkowsiki$和再$O(logn)$判断一个点是否在凸包内: $Minkowsiki$的求法比较容易忘,要多多温习才可以: #include<bits ...

  5. 浏览器json数据格式化

    在浏览器上作接口测试的时候看到json 格式的数据是密密麻麻的一片,眼睛都花了..  如: 设置方法:  chrome  的右上角选择,然后---  更多工具---  扩展程序  ----   JSO ...

  6. Swarm使用原生的overlay网络

    一.Swarm Overlay Network Swarm有Service的概念.一个Service是指使用相同镜像.同时运行的多个容器,多个容器同时一起对外提供服务,多个容器之间负载均衡.每个Ser ...

  7. vue的全局指令

    vue有四个全局指令:directive.extent.set.component directive:自定义指令 //写一个改变颜色的指令 Vue.directive('amie',function ...

  8. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  9. H5页面中唤起native app

    现在各类app,分享出去的H5页面中,一般都会带着一个立即打开的按钮,如果本地安装了app,那么就直接唤起本地的app,如果没有安装,则跳转到下载.这是一个很正常的推广和导流量的策略,最近产品经理就提 ...

  10. bzoj千题计划171:bzoj2456: mode

    http://www.lydsy.com/JudgeOnline/problem.php?id=2456 任意删除序列中两个不同的数,众数仍然是众数 不停的删,剩下的最后的数一定是众数 具体实现: 记 ...