java IO流之——File类知识总结和面试
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类知识总结和面试的更多相关文章
- 【Java IO流】File类的使用
File类的使用 Java中的File类是在java.io.File中,Java.IO.File类表示文件或目录. File类只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. 一 ...
- java IO流 之 FIle类基础
package IO; import java.io.File;import java.io.IOException; public class FileIO { /** * 构建及获取文件名信息 * ...
- IO流,File类的测试........课堂加总结
package liu0926; import java.io.File; import java.io.IOException; public class Text01 { public stati ...
- Java IO体系之File类浅析
Java IO体系之File类浅析 一.File类介绍 位于java.io下的Java File类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等.File对 ...
- JAVASE(十六) IO流 :File类、节点流、缓冲流、转换流、编码集、对象流
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.File类型 1.1.File类的理解 File类是在java.io包下 File可以理解成一个文件 ...
- Java IO流中 File文件对象与Properties类(四)
File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 booleancreateNewFile():创建新文件,如果 ...
- java基础——IO流之File类
1.File类的构造方法: File(String pathName):通过一个指定的字符串类型路径来创建一个文件对象 File (String parent,String child):通过指定 ...
- Java中Io流操作-File类的常用操作-创建文件,创建文件夹
package com.hxzy.IOSer; import java.io.File;import java.io.IOException; public class Demo03 { public ...
- java基础9(IO流)-File类
File类 File:文件和目录路径名的抽象表示形式.即java中把文件或者目录都封装成File对象 代码练习1 import java.io.File; public class FileDemo1 ...
随机推荐
- Ubuntu中Android SDK Manager无法更新解决办法
Ubuntu中Android SDK Manager无法更新解决办法http://hi.baidu.com/petercao2008/item/d7a64441f04668e81e19bc1a
- bzoj 4028 : [HEOI2015]公约数数列
之前看了好几次都没什么思路,今天下定决心把这题切了. 观察到$0-x$的gcd最多变化log次,因为它每次变化一定至少要去掉一个质因子,所以我们可以枚举gcd. 因为数据范围比较小,所以想到了分块. ...
- web项目中日志管理工具的使用
在web项目中,很多时候会用到日志管理工具,常见的日志管理用具有:JDK logging(配置文件:logging.properties) 和log4j(配置文件:log4j.properties) ...
- 《Spring实战》 1-2
第1章 Spring之旅 Spring容器 Spring中bean的生命周期 Spring框架中的模块 Spring Portfolio 第2章 装配Bean 自动化装配bean 通过Java代码装配 ...
- 总结: 《jQuery基础教程》 1-4章
前言: 因为公司的项目用到了jQuery+Bootstrap,而Bootstrap基于jQuery,突然发现自己只是很久前看过jQuery的视频教程,对jQuery的一些API有一些了解,在使用中还是 ...
- Docker 基础知识
Docker Docker 是什么 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是 ...
- bzoj千题计划159:bzoj2055: 80人环游世界(有源汇上下界可行最小费用流)
http://www.lydsy.com/JudgeOnline/problem.php?id=2055 某个国家必须经过vi次, 可以转化为上下界都为vi的边 对这张图做有源汇上下界可行最小费用流 ...
- 六、Kafka 用户日志上报实时统计之分析与设计
一.项目整体概述 简述项目的背景 背景:用户行迹企业运营 分析项目的目的 通过对项目的分析,可以初步得到以下目的: •实时掌握用户动态 •根据实时统计结果,适度推广 •统计分析效果,快速合理的调整 二 ...
- Java并发编程原理与实战四十一:重排序 和 happens-before
一.概念理解 首先我们先来了解一下什么是重排序:重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段. 从Java源代码到最终实际执行的指令序列,会分别经历下面3种重排序,如下图 ...
- sklearn_模型遍历
# _*_ coding = utf_8 _*_ import matplotlib.pyplot as plt import seaborn as sns import pandas as pd f ...