第15章-输入/输出 --- File类
(一) Java的IO通过java.io包下的类和接口来支持,在java.io包下主要包括输入、输出两种IO流。
每种输入、输出流又分为字节流和字符流两大类:
(1)字节流以字节为单位来处理输入、输出操作
(2)字符流则以字符来处理输入、输出操作
除此之外,Java的IO流使用了一种装饰器设计模式,它将IO流分成底层节点流和上层处理流,其中节点流用于和底层的物理存储节点之间关联---不同的物理节点获取节点流的方式可能存在一定的差异,但程序可以把不同的物理节点流包装成统一的处理流,从而允许程序使用统一的输入、输出代码来读取不同的物理存储节点的资源。
(二)File类
File类是java.io包下代表与平台无关的文件和目录,如果系统程序操作文件和目录都可以通过File类来完成。但是File不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。
(三)访问文件和目录
File类提供了很多方法来操作文件和目录:
1.访问文件名相关的方法:
a. String getName():返回此File对象所表示的文件名或路径名
b. String getPath():返回此File对象所对应的路径名
c. File getAbsoluteFile(): 返回此File对象所对应的绝对路径所对应的File对象
d. String getParent():返回此File对象所对应目录的父目录名
e. boolean rename(File newName):重命名此File对象所对应的文件或目录,如果重命名成功,则返回true,否则返回false
2. 文件检测相关的方法
a. boolean exists():判断File对象所对应的文件或目录是否存在
b. boolean canWrite():判断File对象所对应的文件盒目录是否可写
c. boolean canRead():判断File对象所对应的文件盒目录是否可读
d. boolean isFile():判断File对象所对应的是否是文件,而不是目录
e. boolean isDirectory():判断File对象所对应的是否是目录,而不是文件
f. boolean isAbsolete():判断File对象所对应的文件或目录是否是绝对路径。
3. 获取常规文件信息
a. long lastModified():返回文件的最后修改时间
b. long length():返回文件内容的长度
4. 文件操作相关的方法
a. boolean createNewFile(): 当此File对象所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,如果创建成功则返回true;否则返回false.
b. boolean delete():删除File对象所对应的文件或路径
5. 目录操作相关的方法
a. boolean mkdir():试图创建一个File对象所对应的目录,如果创建成功,则返回true;否则返回false。调用该方法时File对象必须对应一个路径,而不是一个文件。
b. String[] list():列出File对象的所有子文件名和路径名,返回String数组。
c. File[] listFiles():列出File对象的所有子文件和路径,返回File数组。
d. static File[] listRoots(): 列出系统所有的根路径。
下面举例说明下:

import java.io.File;
import java.io.IOException; public class FileTest
{
public static void main(String[] args) throws IOException
{
//以当前路径来创建一个File对象
File file = new File("."); //直接获取文件名,输出一点
System.out.println(file.getName()); //获取相对路径的父路径可能出错,下面代码输出null
System.out.println(file.getParent()); //获取绝对路径
System.out.println(file.getAbsoluteFile()); //获取上一级路径
System.out.println(file.getAbsoluteFile().getParent()); //在当前路径下创建一个临时文件
File tmpFile = File.createTempFile("aaa", ".txt",file); //指定当JVM退出时删除该文件
tmpFile.deleteOnExit(); //以系统当前时间作为新文件名来创建新文件
File newFile = new File(System.currentTimeMillis() + "");
System.out.println("newFile对象是否存在 : " + newFile.exists()); //以指定newFile对象来创建一个文件
newFile.createNewFile(); //使用list()方法列出当前路径下的所有文件和路径
String[] fileList = file.list();
System.out.println("=====当前路径下所有文件和路径如下=====");
for(String fileName : fileList)
{
System.out.println(fileName);
} //listRoots()静态方法列出所有的磁盘根路径
File[] roots = file.listRoots();
System.out.println("=======系统所有根路径如下=======");
for(File root : roots)
{
System.out.println(root);
}
}
}

运行结果:

.
null
H:\OhMyGod\Test\.
H:\OhMyGod\Test
newFile对象是否存在 : false
=====当前路径下所有文件和路径如下=====
.classpath
.project
.settings
1390727504600
aaa1644796813208724263.txt
aaa6169179965396772881.txt
bin
out.txt
props.txt
src
text.txt
=======系统所有根路径如下=======
C:\
D:\
E:\
G:\
H:\
I:\
J:\
K:\
L:\
M:\

(四)文件过滤器
在File类的list()方法中可以接收一个FilenameFilter参数,通过该参数可以只列出符合条件的文件。
FilenameFilter接口里包含了一个accept(File dir,String name)方法,该方法将依次对指定File的所有子目录或者文件进行迭代,如果该方法返回true,则list()方法会列出该子目录或者文件。
举例:

import java.io.File;
import java.io.FilenameFilter; public class FilenameFilterTest
{
public static void main(String[] args)
{
File file = new File(".");
String[] nameList = file.list(new MyFilenameFilter()); for(String name : nameList)
{
System.out.println(name);
}
}
} //实现自己的FilenameFilter实现类
class MyFilenameFilter implements FilenameFilter
{
@Override
public boolean accept(File dir, String name)
{
return name.endsWith(".java") || new File(name).isDirectory();
}
}
第15章-输入/输出 --- File类的更多相关文章
- Java 输入/输出——File类
File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使用File来操作的,File能新建 ...
- 第15章-输入/输出 --- 理解Java的IO流
(一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...
- I/O(输入/输出)---File类
File:表示文件与目录.用它来对文件或目录进行基本操作,它可以查出文件的基本相关信息,比如:名称.最后的修改日期.文件大小. 使用File类操作文件和目录属性步骤: 1.引入File类 import ...
- 输入和输出--File类
输入和输出 写在前面的:Java中的输入和输出还是比较重要的,之前我都没想整理IO和多线程的,但是在研究后面的好多东西时候,经常要读取资源文件,这个时候就不得不回过头来整理IO了.要玩熟Java的输入 ...
- 第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍
PCL中I/O库提供了点云文件输入输出相关的操作类,并封装了OpenNI兼容的设备源数据获取接口,可直接从众多感知设备获取点云图像等数据.I/O模块利用21个类和28个函数实现了对点云的获取.读入.存 ...
- 【知识强化】第五章 输入/输出(I/O)管理 5.1 I/O管理概述
这门课的最后一个章节——设备管理. 操作系统它作为系统资源的管理者,既需要对上层的软件进行管理,也需要对下层的硬件进行管理.操作系统它需要对处理机还有存储器这些硬件进行管理,但是这些硬件其实是在计算机 ...
- 【知识强化】第五章 输入/输出(I/O)管理 5.2 I/O核心子系统I
学习I/O核心子系统相关的一系列功能. 设备独立性软件.设备驱动程序.中断处理程序这三层其实是属于操作系统的内核部分的,所以它们也称作“I/O核心子系统”,又可以简称为“I/O系统”.在考研当中我们需 ...
- 【C++ Primer 第15章】定义派生类析构函数
学习资料 • 基类和派生类析构函数执行顺序 定义派生类析构函数 [注意]定义一个对象时先调用基类的构造函数.然后调用派生类的构造函数:析构的时候恰好相反:先调用派生类的析构函数.然后调用基类的析构函数 ...
- 【C++ Primer 第15章】定义派生类拷贝构造函数、赋值运算符
学习资料 • 派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值 • C++ 基类构造函数带参数的继承方式及派生类的初始化 定义拷贝构造函数 [注意]对派生类进行拷贝构造时,如果想让基类的成 ...
随机推荐
- linux常用的压缩与解压缩命令
1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...
- Linux之mailx的使用
mailx是UNIX系统上用来处理邮件的工具,使用它可以发送,读取邮件.下面看看如何使用它来发送邮件. 发送格式 mailx -s subject user@xxx.com < message_ ...
- 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
: 12MHz 晶振 对应 405 ~ 532 MHz 处理速度; -- : 16K 指令缓存, 16K 数据缓存; -- : 32KB 指令缓存, 32KB 数据缓存; (3) 内存接口对比 : 提 ...
- 【翻译】Ext JS最新技巧——2015-8-11
原文:Top Support Tips Seth Lemmons:使用棒极了的Awesome Font Ext JS 6附带了一个新的海卫一主题,可以使用Font Awesome字体作为背景图像的图标 ...
- Socket编程实践(10) --select的限制与poll的使用
select的限制 用select实现的并发服务器,能达到的并发数一般受两方面限制: 1)一个进程能打开的最大文件描述符限制.这可以通过调整内核参数.可以通过ulimit -n(number)来调整或 ...
- 关于Class文件
什么是Class文件 Java人对class文件肯定很熟悉了,它是Java源码编译后的产物.JVM运行时负责加载class文件,并根据class定义的执行逻辑运行.java为了将硬件底层的差异屏蔽掉, ...
- MySQL慢查询优化 EXPLAIN详解
我们平台过一段时间就会把生产数据库的慢查询导出来分析,要嘛修改写法,要嘛新增索引.以下是一些笔记.总结整理 慢查询排查 show status; // 查询mysql ...
- Java模式之模板方法模式
当我们遇到的业务逻辑具有大致相同的方式的时候,我们也许就该将这个业务逻辑抽象出来,采用模板方法,来进行封装我们的代码,提高代码的重用性,以及可维护性.下面是我的一个复习用的案例: 第一步:我们需要一个 ...
- 简谈高通Trustzone的实现
从trust zone之我见知道,支持trustzone的芯片会跑在两个世界. 普通世界.安全世界,对应高通这边是HLOS,QSEE. 如下图: 如下是HLOS与QSEE的软件架构图 HLOS这两分为 ...
- Category Protocol Exte…
作者:韩俊强 总结以往方法: 继承是可以完成对类型的扩充,不仅能添加方法,也可以添加实例变量:/缺点:如果工程中有很多需要扩充类的使用,此时要用子类去完成替换,工作量非常大,还容易出错.下面通过例子过 ...